如何根据自定义列表订购查询集

时间:2014-02-01 06:40:20

标签: django python-2.7

我有一个模特

Class Foo(Model):
    name = models.charfield(max_length=100)
    fk = models.foreignkey('SomeModel')
    datetime = models.datetimefield()

现在我希望通过自定义名称对此Foo进行过滤或排序,即我有一个名称列表,我希望按此顺序排序。

list =('Ground','Floor','Basement')。即所有名称中包含地面的Foo对象将首先出现,然后所有foo对象包含第二层,然后是包含地下室的所有对象。

我想要这样的东西。这是不对的,但我想要类似的东西。

some_list = ('Ground', 'Floor', 'Basement')
Foo.objects.filter(fk=some).order_by(name__icontains=some_list)

如果问题不明确,请发表评论。

1 个答案:

答案 0 :(得分:0)

鉴于此模型:

class MyModel(models.Model):
    name = models.CharField(max_len=255)

您将使用order_by对其进行排序:

MyModel.objects.all().order_by('name')

您还可以通过更改Meta类中的ordering来设置对象的默认顺序:

class MyModel(models.Model):
    name = models.CharField(max_len=255)

    class Meta:
        ordering = ['name', '-date_created']

首先按name升序排序,然后按date_created降序排序(假设您有namedate_created字段