Python Django:过滤查询集并选择结果外键
在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” 预
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中的元素具有该属性。