Python Django:过滤查询集并选择结果外键

Python Django:过滤查询集并选择结果外键,python,django,django-models,Python,Django,Django Models,在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没有属性“a” 预

在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没有属性“a”

预期结果: 仅包含对象的查询集


实现所需功能的最佳和最快的方法是什么?

我想您正在寻找类似的方法

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

我猜你在找类似的东西

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

Andrey Zarubin回答的另一种方法是迭代您拥有的queryset并创建一个对象列表

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

Andrey Zarubin回答的另一种方法是迭代您拥有的queryset并创建一个对象列表

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

下面的代码不会过滤所有内容,但它会过滤与字段相关的所有值,可能您正在查找相同的值


B.objects.filtermember=True.filtera\uu somefield='some value'

下面的代码不会过滤所有内容,但它会过滤与字段相关的所有值,可能您正在查找相同的内容


B.objects.filtermember=True.filtera\uu somefield='some value'

不确定您的期望值。过滤器返回一个queryset,而不是一个实例,因此它没有属性;queryset中的元素具有该属性。不确定您期望的是什么。过滤器返回一个queryset,而不是一个实例,因此它没有属性;queryset中的元素具有该属性。