2017-12-18 199 views
1

我有一個: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字段嗎?

回答

1

我認爲在用戶模型中添加指定字段將起作用。 您可以根據指定輕鬆篩選用戶;如果他是員工或批准者,將會有所區別。 該模型將是這樣的....

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) 

現在,公司可以有很多審批和審批人只能批准一個公司。

在您的視圖中,您可以根據角色編寫邏輯或分配特定權限。