繁体   English   中英

在 django 中使用 Q 并结合 QuerySet

[英]working with Q in django and combining QuerySet

有两个模型OrdersClients ,创建时会为每个模型生成相同的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
  1. 也就是说,我正在寻找两种模型中的出现。
  2. 然后我尝试 select 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM