gpt4 book ai didi

Django:同一模型上不同查询集的联合

转载 作者:行者123 更新时间:2023-12-02 05:54:37 26 4
gpt4 key购买 nike

我正在对一个模型的搜索进行编程,但我遇到了问题。

我的模型几乎是这样的:

class Serials(models.Model):
id = models.AutoField(primary_key=True)
code = models.CharField("Code", max_length=50)
name = models.CharField("Name", max_length=2000)

我在数据库中有这样的元组:

1   BOSTON   The new Boston
2 NYT New York journal
3 NEWTON The old journal of Mass
4 ANEWVIEW The view of the young people

如果我搜索字符串 new,我想要的是:

  • 首先以字符串开头的名称
  • 然后是字符串开头的代码
  • 然后是包含该字符串的名称
  • 然后是包含该字符串的代码

所以前面的列表应该以下面的方式出现:

2   NYT      New York journal
3 NEWTON The old journal of Mass
1 BOSTON The new Boston
4 ANEWVIEW The view of the young people

我发现获得这种结果的唯一方法是进行不同的搜索(如果我在单个搜索中放置“OR”,我会失去我想要的顺序)。

我的问题是显示结果的模板代码确实是多余的,而且说实话非常难看,因为我必须为所有 4 个不同的查询集重复相同的代码。更糟糕的是我不能使用分页!

现在,由于不同查询集的结构是相同的,我正在徘徊是否有一种方法可以加入 4 个查询集并只为模板提供一个查询集。

最佳答案

您可以进行这四个查询,然后将它们链接到您的程序中:

result = itertools.chain(qs1, qs2, qs3, qs4)

但这似乎不太好,因为您必须进行查询。

你也可以使用原始sql编写你自己的sql,例如:

Serials.objects.raw(sql_string)

再看看这个:

How to combine 2 or more querysets in a Django view?

关于Django:同一模型上不同查询集的联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3300735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com