2015-10-27 46 views
-1

我繼承了AbstractUser這樣:定義默認密鑰在許多一對多的關係

class MyUser(AbstractUser): 
    customer = models.ManyToManyField(Customer) 
    default_customer = models.ForeignKey(Customer) 

一個用戶可以有不同的客戶的賬戶,當然還有客戶賬戶將有大量的用戶。

但我想添加一個「default_customer」字段,將在用戶界面中進行更改。

做上述,我得到了一個錯誤:

profiles.MyUser.customer: (fields.E304) Reverse accessor for 'MyUser.customer' clashes with reverse accessor for 'MyUser.default_customer'. 
    HINT: Add or change a related_name argument to the definition for 'MyUser.customer' or 'MyUser.default_customer'. 
profiles.MyUser.default_customer: (fields.E304) Reverse accessor for 'MyUser.default_customer' clashes with reverse accessor for 'MyUser.customer'. 
    HINT: Add or change a related_name argument to the definition for 'MyUser.default_customer' or 'MyUser.customer'. 

我可以添加一個related_name我多對多和ForeignKey的領域,而且是我設計的好不好?

+0

將'relatedUser_name'參數添加或更改爲'MyUser.customer'或'MyUser.default_customer'的定義。 – EchoUA

+0

是的,我問了一個錯誤的問題:我的設計好嗎? – bixente57

回答

0

問題是從Customer導航到MyUser的相關名稱,django會自動生成一個會在您的兩個關係中發生衝突的名稱。要修復該問題,請指定一個:

class MyUser(AbstractUser): 
    customer = models.ManyToManyField(Customer, related_name='users') 
    default_customer = models.ForeignKey(Customer, related_name='default_users')