Django查询相关对象

时间:2011-10-26 14:25:52

标签: django django-models

我有这样的模特:

class A(Model):
    ....

class B(Model):
    a = ForeignKey(A, related_name="bbb")

class C(Model)
    b = ForeignKey(B, related_name="ccc")
    file = FileField( ... , null=True, blank=True)

在模板或视图中,我需要一个标记A行,如果某个与A相关的C对象有file = None(null)。 感谢。

1 个答案:

答案 0 :(得分:2)

如果我理解正确,请尝试:

for a in A.objects.all():
    for b in a.bbb.all():
        for c in b.ccc.filter(file__isnull=True):
            a.has_c_with_null_file = True
            a.save()

OR

    c_without_file = C.objects.filter(file__isnull=True)
    for c in c_without_file:
        c.b.a.has_c_with_null_file = True
        c.b.a.save()

OR

    A.objects.filter(b__c__file__isnull=True).update(has_c_with_null_file=True)

如果您不使用相关名称,请使用b_set和c_set。