[英]In Django select related field via foreign key
我知道选择一个相关对象应该做object.related_set.all()
。 但是在我的情况下,这会产生AttributeError,因此很难调试。 这是设置:
class Action(models.Model):
...
class FieldDiff(models.Model):
action = models.ForeignKey(Action, editable=False, related_name='Action')
并在外壳中:
In [16]: act = Action.objects.get(pk=34)
In [17]: act.fielddiff_set.all()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/home/ipantuyev/progs/ccc_app/<ipython console> in <module>()
AttributeError: 'Action' object has no attribute 'fielddiff_set'
我想这与驼峰驼的翻译有关。 我可以解决这个问题,但是将从模板中调用此代码,所以我宁愿没有多余的逻辑。
这是因为您将related_name
指定为Action
。 这意味着您想通过Action_set
访问与Action
关联的所有FieldDiff
实例。 由于这似乎不是您想要的,因此最简单的解决方案是删除related_name
参数。
这与“从驼峰式翻译”无关。
您已为ForeignKey提供了显式的related_name
属性。 这是Django用于提供反向关系的名称。 因此,您的查询应为:
act.Action.all()
实际上,那个related_name值没有任何意义。 您应该将其删除,然后原始的fielddiff_set
将起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.