如何使用django ORM从两个连接在一起的表中访问所有模型属性

时间:2017-06-21 15:23:11

标签: mysql django orm

我想根据其中一个表属性访问两个相关表中的所有值:

obj = A.objects.filter(B__sample='sample_name').select_related()

但是当我这样做时:

{% for o in obj %}

    {{o.sample}}
    {{o.results}}
    {{o.qc}}

{% endfor %}

仅返回o.results和o.qc(来自表A),o.sample未返回(来自表B)

如何从查询集对象中访问表A和B中的所有值?

2 个答案:

答案 0 :(得分:1)

obj = A.objects.filter(B__sample='sample_name').select_related('b')

尝试使用小外国型号名称

答案 1 :(得分:1)

您误解了模型在Django中的运作方式。

sample是来自模型B的属性,并且始终是该属性。 Django不会将其作为模型A的直接属性添加;这会令人困惑。

您仍然可以通过模型B的实例访问它; Django给你的魔力是o.B(或你的ForeignKey被调用的任何东西)将访问该模型B实例,因此你可以o.B.sample。由于您已使用select_related,因此不会导致其他数据库命中。