2011-10-26 15 views
-1

:Aに関連するいくつかのCのオブジェクトはファイル=なし(null)を有する場合、テンプレート内またはビューのDjangoのクエリ関連オブジェクト

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) 

私は、マーク列を必要とします。おかげさまで

+1

これを少し説明してください。おそらく実際の例を追加しますか? – cwallenpoole

+0

例:A - User、B - PhotoAlbum、C - Photo。私のクエリでは、空のアルバムやメイドのオブジェクト写真を持つユーザーが選択されましたが、アップロードされたファイル写真は選択されませんでした。ただの例。 – Alexey

答えて

2

私が正しく理解していれば、この試してください:あなたは、関連する名前をオフのままにした場合b_setとc_setを使用し、

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) 

を。

+0

ありがとうございました。 A.objects.filter(b__c__file__isnull = True).distinct()が必要です。 – Alexey

+0

またはA.objects.filter(b__c__file__isnull = True、b__c__isnull = True).distinct()!!!!できます – Alexey

関連する問題