python - 在 django 中使用 Q 并结合 QuerySet
问题描述
有两个模型Orders
,并且Clients
在创建时related_uuid
会为每个模型生成相同的模型。也就是说,它们是如此紧密地联系在一起。在网站上搜索时,您需要找到两个模型中的所有出现并显示 all Orders
,包括模型中related_uuid
出现的那些Clients
。
模型.py
class Orders(models.Model):
device = models.CharField(max_length=150)
related_uuid = models.CharField(max_length=22, blank=True)
def __str__(self):
return self.device
class Clients(models.Model):
name = models.CharField(max_length=150)
related_uuid = models.CharField(max_length=22, blank=True)
def __str__(self):
return self.name
视图.py
def getQuery(self):
search_query = self.request.GET.get('filter')
results_query1 = Orders.objects.filter(Q(device__icontains=search_query))
results_query2 = Clients.objects.filter(Q(name__icontains=search_query))
conds = Q(related_uuid__icontains=results_query1) | Q(related_uuid__icontains=related_query2)
search_filter_three = Orders.objects.filter(conds)
return search_filter_three
- 也就是说,我正在寻找两种模型中的出现。
- 然后我尝试从两个模型
Orders
的related_uuid
字段中选择模型中的所有输入。
输出 django.db.utils.OperationalError: (1241, 'Operand should contain 1 column (s)')
解决方案
You can use chain
:
from itertools import chain
search_filter_three = list(chain(results_query1, results_query2))
推荐阅读
- react-native - 我在哪里放置带有 expo 的 admob 的应用程序 ID?
- ios - setValue(value, forKey) 以某种方式改变了 Realm 中的整个数组
- java - 如何在没有 spring 框架的情况下读取配置文件 (*.yaml *.properties)
- machine-learning - 如何使用 torchvision.datasets.Imagefolder 将数据拆分为训练集和测试集?
- javascript - 如何在桌面和移动 Safari 上的页面加载时滚动到
- python - Python os.chdir() 到根目录实际上将目录更改为当前目录
- javascript - 通过另一个下拉列表 Id ASP.Net 过滤下拉列表
- swift - 向 SpriteKit 游戏添加弹出文本视图
- python - 在python中获取除一个之外的所有文件夹名称
- c# - 在单例 c#winforms 中按名称操作实例