[英]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.