【问题标题】:Django: order QuerySet by whether a field value is in a listDjango:根据字段值是否在列表中排序QuerySet
【发布时间】:2012-09-01 14:05:06
【问题描述】:

我正在尝试根据模型字段值是否在列表中来订购 Django QuerySet。

我知道你可以过滤这个属性,像这样:

my_qs = MyModel.objects.filter(id__in=[1,3,5,11])

只会给我 ID 为 1、3、5 和 11 的 MyModel 对象。

我想订购这家酒店。使用上面的示例,我希望首先在列表中包含具有 id 的 MyModel 对象,但仍然有所有其他 MyModel 对象,就在它们之后。

感谢您的帮助!

【问题讨论】:

    标签: django sorting django-queryset


    【解决方案1】:
    my_qs = MyModel.objects.filter(id__in=[1,3,5,11])
    not_my_qs = MyModel.objects.exclude(id__in=[1,3,5,11])
    
    from itertools import chain
    result_list = list(chain(my_qs, not_my_qs))
    

    【讨论】:

      猜你喜欢
      • 2020-06-30
      • 2022-11-12
      • 1970-01-01
      • 2014-06-15
      • 2011-05-09
      • 1970-01-01
      • 2018-02-19
      • 2020-07-28
      相关资源
      最近更新 更多