[英]related_name argument not working as expected in Django model?
我最近在Django模型中遇到了ForeignKey冲突。 我需要有两个最终指向同一模型(用户)的外键(所有者,assigned_to)。
据我了解,我需要一个related_name
参数来解决该问题。 所以我做到了:
assigned_to = models.ForeignKey(TaskUser, blank=True, null=True, related_name='user_assignment')
和
owner = models.ForeignKey(TaskUser, related_name="user_ownership"
但我仍然遇到错误:
tasks.task: Accessor for field 'owner' clashes with related field 'TaskUser.user
_ownership'. Add a related_name argument to the definition for 'owner'.
tasks.task: Reverse query name for field 'owner' clashes with related field 'TaskUser.user_ownership'. Add a related_name argument to the definition for 'owner'.
为什么我仍然收到此错误?
有一个陷阱, owner
在超类(BaseWidget)中, assigned_to
在子类(Task)中。 在继承关系中使用related_name
是否存在问题? 我是否需要重写所有者的继承并在子类中重新定义related_name
? 我将不胜感激!
如果抽象基类中具有ForeignKey
关系,则从它继承的每个类都将具有此关系。 结果,您不能对其related_name
“硬编码”,因为所有子类都将尝试在该实际类(本例中为TaskUser
)上创建相同的访问器。
您最好执行以下操作:
owner = models.ForeignKey(TaskUser, related_name="%(app_label)s_%(class)s_ownership")
请参阅django文档 。
如果在抽象基类中使用related_name,则需要在其中使用'%(app_label)s'和'%(class)s'。 在Django文档中提到
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.