【问题标题】:Custom Order by in django在 django 中自定义排序
【发布时间】:2016-02-03 06:07:31
【问题描述】:

我必须在我的代码中进行自定义排序,

考虑下面的例子:

class Car(models.Model):    
     type
     brand

每当我使用品牌订购时,我都会得到以下查询集

cars = ["Benz","BMW","Ford","Honda","Suzuki"]

我需要按品牌排序,其中“BMW”应该总是像下面的查询集一样,

cars = ["Benz","Ford","Honda","Suzuki", "BMW"]

注意:我不想将其用作/转换为列表。我需要在 order by 之后对此进行一些查询集操作(如 values_list)。

【问题讨论】:

  • 您必须使用自定义 SQL。看到这个答案:stackoverflow.com/a/18238896/3224008
  • 把宝马放在最后的逻辑是什么?还是只是个人喜好?
  • 在模型中添加一个额外字段为 go_last 并按 go_last 排序,然后按品牌排序

标签: python django django-queryset


【解决方案1】:

你可以尝试像这里一样:

https://stackoverflow.com/a/2176471/4971083

这是在 Django 中按特定值对记录进行排序的解决方案。

car = Car.objects.filter(product__id=product_id).extra(
        select={'is_top': " brand='BMW'"})
car = car.extra(order_by = ['is_top'])

【讨论】:

    猜你喜欢
    • 2010-10-27
    • 2018-09-28
    • 2022-10-05
    • 2016-12-05
    • 2011-04-07
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多