我需要一个公司许可证的多对多关系吗?

我需要一个公司许可证的多对多关系吗?

问题描述:

我有一个:UserCompany我需要一个公司许可证的多对多关系吗?

class User(AbstractBaseUser): 
    first_name = models.CharField(max_length=30) 
    last_name = models.CharField(max_length=30) 
    company = models.ForeignKey(
     'projects.Company', 
     on_delete=models.PROTECT 
    ) 


class Company(models.Model): 
    '''Company model 
    every user needs to be assigned to a company 
    ''' 
    name = models.CharField(max_length=255, unique=True) 

现在我需要设置每companyleave approvers这将是Users。可以有几个,我想为他们设定一个优先级。

如果它是一个单一的LeaveApprover那么我只是简单地添加一个一对一的Company模型与外键到LeaveApprover。但就我而言,一家公司可以有很多批准者,批准者只能批准一家公司。

我需要一个many-to-many字段吗?

我认为在用户模型中添加指定字段将起作用。 您可以根据指定轻松筛选用户;如果他是员工或批准者,将会有所区别。 该模型将是这样的....

class User(AbstractBaseUser): 
    first_name = models.CharField(max_length=30) 
    last_name = models.CharField(max_length=30) 
    role = models.CharField(max_length=15) 
    company = models.ForeignKey(
     'projects.Company', 
     on_delete=models.PROTECT 
    ) 


class Company(models.Model): 
    '''Company model 
    every user needs to be assigned to a company 
    ''' 
    name = models.CharField(max_length=255, unique=True) 

现在,公司可以有很多审批和审批人只能批准一个公司。

在您的视图中,您可以根据角色编写逻辑或分配特定权限。