[英]working with Q in django and combining QuerySet
有两个模型Orders
和Clients
,创建时会为每个模型生成相同的related_uuid
。 也就是说,它们是如此紧密地联系在一起。 在站点上搜索时,您需要找到两个模型中的所有出现并显示所有Orders
,包括在Clients
related_uuid
中出现 related_uuid 的那些。
模型.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
中的所有输入都来自两个模型的related_uuid 字段。 输出django.db.utils.OperationalError: (1241, 'Operand should contain 1 column (s)')
您可以使用chain
:
from itertools import chain
search_filter_three = list(chain(results_query1, results_query2))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.