假设我有一系列书籍章节对象,由此模型定义:
class Chapter(models.Model):
heading = models.CharField()
contents = models.TextField()
假设我目前有四章:a,b,c和d。如何将章节的顺序定义为b,d,c,a或其他任意序列?
答案 0 :(得分:0)
那些解决方案真是恐怖!!
Chapter.objects.all().order_by("?")
非常简单漂亮
答案 1 :(得分:0)
我相信你会对order-with-respect-to
Django Meta选项感到满意。
我找不到使用id
中set_RELATED_order
之外的任何其他字段的方法。
它发生在我身上,虽然我没有测试它,你可以在你的章节模型中有一个order = IntegerField...
,并且在某个地方有一个看起来像这样的声明:
order = [id for (order, id) in sorted([(x.order, x.id) for x in Chapter.objects.all()], key=0)]
我在这里不准确也不可靠。我只想用引用1和洞察力为您指明方向。
祝你好运!
答案 2 :(得分:-1)
你可以:
在章节模型中添加' sortkey' 整数字段,
为每个模型设置排序键,这意味着您首先需要1,第二个等等,等等...
设置Chapter.Meta.ordering ,以便sortkey用于默认排序
看起来像是:
class Chapter(models.Model):
heading = models.CharField()
contents = models.TextField()
sortkey = models.IntegerField(default=0)
class Meta:
ordering = ('sortkey',)