このモデルで定義された一連の本の章オブジェクトがあるとします。
class Chapter(models.Model):
heading = models.CharField()
contents = models.TextField()
そして、現在、a、b、c、および d の 4 つの章があるとします。章の順序を b、d、c、a、またはその他の任意の順序に定義するにはどうすればよいですか?
それらの解決策は恐ろしいです!
Chapter.objects.all().order_by("?")
とてもシンプルでかわいらしい
あなたは出来る:
章モデルに「sortkey」整数フィールドを追加し、
各モデルのソートキーを設定します。つまり、最初に必要な章には 1、2 番目には 2 など...
ソートキーがデフォルトの順序付けに使用されるように、Chapter.Meta.orderingを設定します。
次のようになります。
class Chapter(models.Model):
heading = models.CharField()
contents = models.TextField()
sortkey = models.IntegerField(default=0)
class Meta:
ordering = ('sortkey',)
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と洞察で方向性を示したいだけです。
幸運を!