我有一个模特
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)
如果问题不明确,请发表评论。
答案 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
降序排序(假设您有name
和date_created
字段