gpt4 book ai didi

python - related_name 参数在 Django 模型中没有按预期工作?

转载 作者:IT老高 更新时间:2023-10-28 22:13:05 31 4
gpt4 key购买 nike

我最近在我的 Django 模型中遇到了 ForeignKey 冲突。我需要有两个外键(owner、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 在父类(super class)(BaseWidget)中,assigned_to 在子类(Task)中。在继承关系中使用 related_name 是否存在问题?我是否需要只覆盖所有者的继承并在子类中重新定义 related_name ?如有任何帮助,我将不胜感激!

最佳答案

如果您在抽象基类中有 ForeignKey 关系,则从它继承的每个类都将具有这种关系。因此,您不能“硬编码”它的 related_name,因为所有子类都将尝试在 realted 类上创建相同的访问器(在这种情况下为 TaskUser)。

你最好这样做:

owner = models.ForeignKey(TaskUser, related_name="%(app_label)s_%(class)s_ownership")

django docs关于这个。

关于python - related_name 参数在 Django 模型中没有按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5611410/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com