假设我有一系列书籍章节对象,由该模型定义:
class Chapter(models.Model):
heading = models.CharField()
contents = models.TextField()
假设我目前有四章:a、b、c 和 d。我如何将章节的顺序定义为 b、d、c、a 或其他任意顺序?
你可以:
向 Chapter 模型添加一个 'sortkey'整数字段,
为每个模型设置排序键,这意味着 1 代表你想要的第一章,2 代表第二章,等等……
设置Chapter.Meta.ordering,以便排序键将用于默认排序
它看起来像:
class Chapter(models.Model):
heading = models.CharField()
contents = models.TextField()
sortkey = models.IntegerField(default=0)
class Meta:
ordering = ('sortkey',)
这些解决方案太可怕了!!
Chapter.objects.all().order_by("?")
非常非常简单漂亮
我相信您会对order-with-respect-to
Django Meta 选项感到非常满意。
id
除了in之外,我找不到使用任何其他字段的方法set_RELATED_order
。尽管我没有对其进行测试,但我突然想到,您可以order = IntegerField...
在 Chapter 模型中有一个,并且在某处有一个看起来像这样的语句:
order = [id for (order, id) in sorted([(x.order, x.id) for x in Chapter.objects.all()], key=0)]
我在这里既不准确也不可靠。我只是想通过参考1和洞察力为您指明方向。
祝你好运!