【发布时间】:2018-05-21 10:07:27
【问题描述】:
具有以下型号:
class Item(models.Model):
name = models.CharField(max_length=255)
attributes = models.ManyToManyField(ItemAttribute)
class ItemAttribute(models.Model):
attribute = models.CharField(max_length=255)
string_value = models.CharField(max_length=255)
int_value = models.IntegerField()
我还有一个Item,它有两个属性,'color': 'red' 和'size': 3。
如果我进行以下任何查询:
Item.objects.filter(attributes__string_value='red')
Item.objects.filter(attributes__int_value=3)
我将得到Item 的返回,按我的预期工作。
但是,如果我尝试执行多个查询,例如:
Item.objects.filter(attributes__string_value='red', attributes__int_value=3)
我只想做一个 AND。这也不起作用:
Item.objects.filter(Q(attributes__string_value='red') & Q(attributes__int_value=3))
输出是:
<QuerySet []>
为什么?我如何构建这样的查询以返回我的Item,因为它具有属性red 和属性3?
【问题讨论】:
-
当您说“多个”时,您的意思是“AND 查询”吗?
-
是的,我想做一个
AND。
标签: django django-models django-orm