django - Django查询具有列表值的多个字段
问题描述
我有以下 Django 模型
class Post(models.Model):
author = models.ForeignKey(CustomUser,on_delete=models.CASCADE,)
title = models.CharField(max_length=200,null=True)
text = models.TextField()
post_url = models.URLField(max_length = 200, blank = True)
post_tier = models.ForeignKey(Tiers, on_delete=models.CASCADE, null= True)
post_tier_value = models.IntegerField(default=0)
slug = models.SlugField(unique=True, blank=True)
我有author_list = [author1@gmail.com, author2@gmail.com]
和tier_value_list = [2000,3000]
。我想在上述模型中查询(author = author1@gmail.com and post_tier_value <= 2000)
or (author = author2@gmail.com and post_tier_value <= 3000)
。
有人可以帮助我如何对此进行查询吗?
解决方案
使用Q()
运算符
from django.db.models import Q
author_list = ['author1@gmail.com', 'author2@gmail.com']
tier_value_list = [2000, 3000]
query = Q()
for author, value in zip(author_list, tier_value_list):
query = query | Q(author=author, post_tier_value__lte=value)
Post.objects.filter(query)
注意:我使用author__email
的是嵌套查找,因为它author_list
包含 email_ids
推荐阅读
- c# - 注册时将用户添加到具有身份的角色
- angular - angular mat-calendar 在 i18n 语言环境的日期之后添加一个句点
- angular - 使用 ng2-smart-table 进行角度翻译
- c++ - Lua 表字段偶尔更改/丢失
- keycloak - 将 Keycloak 与组存储联合(如用户存储联合)一起使用
- installation - 在 Mac Mojave 安装 Ros 动力学
- c# - 根据多个选定的列表框项目在列表框中显示数据
- javascript - 如何处理首屏隐藏的图像
- python - ValueError:GeoDataFrame 的真值不明确
- amazon-web-services - 构建工件忽略 aws codebuild 中的空文件夹