【发布时间】:2017-10-29 08:43:36
【问题描述】:
我有兴趣按特定顺序按 django orm 过滤表。基本上,这是通过两个字段进行的简单搜索 - 名称和描述。我想首先按“名称”字段并发对结果进行排序,然后按“描述”字段并发排序。以下是原始 sql 的示例:
WITH checkpoints AS (SELECT *
FROM checkpoints_view
WHERE ...)
SELECT *
FROM checkpoints
WHERE name ILIKE '%KEYWORD%'
UNION ALL SELECT *
FROM checkpoints
WHERE description ILIKE '%KEYWORD%' AND name NOT ILIKE '%KEYWORD%';
如何在 django orm 中生成这样的 sql?
谢谢大家
P.S.:对不起,如果我的英语不正确,我来自非英语国家
class Checkpoint(models.Model, ReadOnlyModel):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=255, verbose_name='Наименование')
code_number = models.CharField(max_length=255, verbose_name="Код остановки")
description = models.CharField(max_length=255, verbose_name="Описание")
coordinate = models.PointField(verbose_name="Координата")
routes = ArrayField(models.IntegerField())
dates = ArrayField(models.DateField())
class Meta:
db_table = 'checkpoints_view'
managed = False
几乎所有人都对,但我希望结果是按行开始排序的,它通过了名称字段的过滤器,然后,在这一切之后 - 行,它通过了描述字段的过滤器
【问题讨论】:
-
请分享您的模型
标签: django django-rest-framework django-orm