Python 在同一属性的多个值上筛选查询集
我的Python 在同一属性的多个值上筛选查询集,python,django,django-rest-framework,Python,Django,Django Rest Framework,我的models.py看起来像 class Entity(models.Model): name = models.CharField( max_length=256, verbose_name="Entity Name" ) def __str__(self): return self.name class AttributeValue(models.Model): entity = models.Foreig
models.py
看起来像
class Entity(models.Model):
name = models.CharField(
max_length=256,
verbose_name="Entity Name"
)
def __str__(self):
return self.name
class AttributeValue(models.Model):
entity = models.ForeignKey(
Entity,
on_delete=models.CASCADE,
related_name="attribute_values"
)
value = models.CharField(max_length=9112,
verbose_name="Attribute Value")
def __str__(self):
return self.value
及
现在我不想过滤所有具有属性值abc
和def
的实体,即
for example one entity
{
"id": 1,
"name": "XYZ",
"attribute_values": [
{
"id": 1,
"value": "abc",
"entity": 1
},
{
"id": 2,
"value": "def",
"entity": 1
},
]
}
对于单个实体,可以执行以下操作:
entity.attribute_values.filter(value__in=["abc", "def"])
对于多个实体是一个选项:
filtered_attribute_values = AttributeValue.objects.filter(value__in=["abc", "def"])
queryset = Entity.objects.prefetch_related(Prefetch('attribute_values', queryset=filtered_attribute_values))
对于单个实体,可以执行以下操作:
entity.attribute_values.filter(value__in=["abc", "def"])
对于多个实体是一个选项:
filtered_attribute_values = AttributeValue.objects.filter(value__in=["abc", "def"])
queryset = Entity.objects.prefetch_related(Prefetch('attribute_values', queryset=filtered_attribute_values))
通常,Q()对象使定义和重用条件成为可能。这允许使用|(OR)和&(and)运算符构造复杂的数据库查询;特别是,不可能在QuerySet中使用或
详细的解释在这个链接中给出
通常,Q()对象使定义和重用条件成为可能。这允许使用|(OR)和&(and)运算符构造复杂的数据库查询;特别是,不可能在QuerySet中使用或
详细的解释在这个链接中给出
下面的代码片段将筛选属性值为“abc”或“def”的所有实体:
下面的代码段将筛选属性值为“abc”或“def”的所有实体:
Entity.objects.filter(attribute_values__value__in=["abc", "def"])