2015-10-27 44 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')