python - JSONField 包含在 Django
问题描述
嗨,我想知道一个列表是否包含另一个列表,为此我使用 django + djongo,但如果我正确执行查询,我不知道
我的模型是
class Item(models.Model):
name = models.CharField(max_length= 255)
_id = models.ObjectIdField(primary_key = True)
sku = models.JSONField(null= True)
providers= models.JSONField(null= True)
generic = models.JSONField(null= True)
is_validated = models.BooleanField(default = False)
tags = models.JSONField(null= True)
objects = models.DjongoManager()
我的序列化器
class ItemSerializer(serializers.ModelSerializer):
class Meta:
model = Item
fields = (
'__all__'
)
generic 是一个字符串列表,例如:["martillo", "s2","s3","s4"]
我想获取通用列表包含给定列表的所有项目,我正在尝试下一个查询,但它返回数据库中的所有项目
items = models.Item.objects.filter(generic__contains = ['martillo'])
我做错了什么?
解决方案
import operator
from django.db.models import Q
Item.objects.filter(reduce(operator.and_, (Q(generic__contains=x) for x in ["martillo", "s2","s3","s4"] )))
相当于
Item.objects.filter(Q(generic__contains='martillo') & Q(generic__contains='s2') & Q(generic__contains='s3') etc...)
推荐阅读
- python - 如何在这个 html 中使用 Selenium/Python 编写一些文本
- android - 使用 React Native 和 Expo 构建的 Android 应用程序仍然要求应用程序权限
- php - 无法通过functions.php(使用ACF)在Wordpress站点中显示分类术语名称
- python - Matplotlib subplot 如何调整时间序列 x 轴?
- apache-flink - 创建具有通用返回类型的 FlinkSQL UDF
- python - 无法访问 python 中的 Twitter 包及其功能
- acumatica - 使用 Acumatica 中的 excel 数据提供程序从代码中按场景导入
- c++ - 因此,如果我不需要 emplace_back (emplace) 提供的新功能,我应该使用 push_back (insert)?
- c# - 使用 ajax 和 SQL 存储过程将数据加载到 html 表中
- php - 苗条的异常不知道出了什么问题