【发布时间】:2011-03-19 01:29:16
【问题描述】:
我正在对模型进行搜索,但遇到了问题。
我的模型几乎是这样的:
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,我想要的是:
- 首先是以字符串开头的
names - 然后是以字符串开头的
codes - 然后是包含字符串的
names - 然后是包含字符串的
codes
所以前面的列表应该是这样出现的:
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 个查询集并只给模板一个查询集。
【问题讨论】:
-
从 1.11 版本开始,django 查询集有一个内置的 union 方法。我已将其添加为将来参考的答案
标签: django django-templates django-queryset