外键的Django反向查找

时间:2010-11-14 22:41:44

标签: python django model django-queryset

我有一个django项目,它有两个应用程序,一个是AppAAppB。现在AppA有一个模型 使用ModelA

ModelB中的模型AppB引用的modelA = models.ForeignKey(ModelA, related_name='tricky')

现在在AppA的视图中,当它显示ModelA时,我会get_object_or_404(ModelA, pk=prim_id)。然后我想得到所有ModelB s,其外键指向ModelA

文档说我应该mb = ModelB.objects.get(pk=prim_id)然后mb.modela_set.all()

但是,它在mb.modela_set上失败了,它说"ModelB object has no attribute 'suchsuch'"。请注意,我已将related_name字段添加到ForeignKey,因此我也尝试使用该字段,包括mb.tricky.all()mb.tricky_set.all()无效。

哦,我已经为AppA指定了一个不同的管理员,我在那里objects = MyManager()返回正常查询但是应用了过滤器。

可能是什么问题?获取ModelB引用ModelA的首选方法是什么?

1 个答案:

答案 0 :(得分:5)

ForeignKey所述,如您在ModelB中所描述的那样mb = ModelB.objects.get(pk=prim_id),那么查找modela属性不是反向查找< / strong>即可。您只需通过mb.modela访问相关对象!