说,我有一系列的书章的对象,这个模型中定义:的Django的任意排序对象
class Chapter(models.Model):
heading = models.CharField()
contents = models.TextField()
并假设我现在有四个章节:A,B,c和d。我将如何定义章节的顺序为b,d,c,a或其他任意序列?
说,我有一系列的书章的对象,这个模型中定义:的Django的任意排序对象
class Chapter(models.Model):
heading = models.CharField()
contents = models.TextField()
并假设我现在有四个章节:A,B,c和d。我将如何定义章节的顺序为b,d,c,a或其他任意序列?
我相信,你将与order-with-respect-to
的Django元的选择很满意。
我不能找到一种方法,使用set_RELATED_order
比id
任何其他领域。 它发生在我,虽然我没有测试它,你可以在你的章模型order = IntegerField...
,并有一个看起来像这样的地方声明:
order = [id for (order, id) in sorted([(x.order, x.id) for x in Chapter.objects.all()], key=0)]
我不是精确的,也不可靠这里。我只是试图用一个参考1和一个洞察力指向你的方向。
祝你好运!
,你可以:
添加 '排序关键字'整场章模型,
设置SORTKEY每个模型,为你想要的章指1第一个,第二个等等,等等...
设置Chapter.Meta.ordering,s呵,SORTKEY将使用默认排序
它看起来像:
class Chapter(models.Model):
heading = models.CharField()
contents = models.TextField()
sortkey = models.IntegerField(default=0)
class Meta:
ordering = ('sortkey',)
因此,如果我已经为我的章节分配了排序键(例如,a = 0,b = 1,c = 2,d = 3),那么更改顺序的最佳方法是什么? –
@JosephMornin通过赋予其他值。 – DrTyrsa
这些解决方案是一个恐怖!
Chapter.objects.all().order_by("?")
非常非常简单,漂亮
最通用的方法是添加整数字段,并按它排序。 – DrTyrsa
-1为什么?这是一个很好的问题 – Goin