簡體   English   中英

Django:篩選查詢集並選擇結果外鍵

[英]Django: Filter a QuerySet and select results foreign key

在Django中,我有兩個模型:

class A(models.Model):
    # lots of fields

class B(models.Model):
    a = models.ForeignKey(A)
    member = models.BooleanField()

我需要構造一個過濾B並選擇所有A的查詢,如下所示:

result = B.objects.filter(member=True).a

上面的示例代碼當然會返回錯誤QuerySet has no attribute 'a'

預期結果:僅包含A對象的QuerySet

什么是實現所需功能的最佳和最快方法?

我認為您正在尋找類似的東西

result = A.objects.filter(b__member=True)

Andrey Zarubin答案的另一種選擇是遍歷您擁有的查詢集並創建對象列表。

b_objects = B.objects.filter(member=True)
a_objects = [result.a for result in b_objects]

下面的代碼不會過濾所有內容,但會過濾關於field的所有值,可能是您正在尋找相同的值

B.objects.filter(member = True).filter(a__somefield ='some value')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM