在Django中通过外键选择相关字段

2024-06-28 11:37:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道选择一个相关的对象应该做object.related_set.all()。但在我的情况下,这会产生AttributeError,所以很难调试。设置如下:

class Action(models.Model):
    ...

class FieldDiff(models.Model):
    action = models.ForeignKey(Action, editable=False, related_name='Action')

在一个壳里:

^{pr2}$

我想这和camelcase的翻译有关。我可以绕过这个问题,但是这个代码将从模板调用,所以我宁愿没有额外的逻辑。在


Tags: 对象modelobjectmodels情况actionallclass
2条回答

这是因为您将related_name指定为Action。这意味着您希望通过Action_set访问与Action关联的所有FieldDiff实例。因为看起来这不是您想要的,最简单的解决方案是删除related_name参数。在

这与“从camelcase翻译”无关。在

您已经给ForeignKey一个显式的related_name属性。这是Django用来提供反向关系的名称。所以你的问题应该是:

act.Action.all()

实际上,这个相关的\u name值没有意义。您应该删除它,然后原始的fielddiff_set就可以工作了。在

相关问题 更多 >