Я программирую поиск по модели, и у меня проблема.
Моя модель почти как:
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
Единственный способ, с помощью которого я нашел такой результат, - это выполнять разные поиски (если я в одном поиске введу «ИЛИ», я потеряю нужный мне порядок).
Моя проблема в том, что код шаблона, который показывает результат, действительно избыточен и, честно говоря, очень уродлив, потому что мне приходится повторять один и тот же код для всех 4 различных наборов запросов. И хуже всего то, что я не могу использовать нумерацию страниц!
Теперь, так как структура различных наборов запросов одинакова, я берусь за возможность объединить 4 набора запросов и дать шаблону только один набор запросов.