在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
什么是实现所需功能的最佳和最快方式?
答案 0 :(得分:4)
我假设您正在寻找类似
的内容result = A.objects.filter(b__member=True)
答案 1 :(得分:1)
Andrey Zarubin回答的另一种方法是迭代你拥有的查询集并创建一个对象列表。
b_objects = B.objects.filter(member=True)
a_objects = [result.a for result in b_objects]
答案 2 :(得分:0)
下面的代码不会过滤所有内容,但会过滤掉相关字段的所有值,可能是您正在寻找相同的
B.objects.filter(member = True).filter(a__somefield =' some value')