1

このモデルで定義された一連の本の章オブジェクトがあるとします。

class Chapter(models.Model):
    heading = models.CharField()
    contents = models.TextField()

そして、現在、a、b、c、および d の 4 つの章があるとします。章の順序を b、d、c、a、またはその他の任意の順序に定義するにはどうすればよいですか?

4

3 に答える 3

0

それらの解決策は恐ろしいです!

Chapter.objects.all().order_by("?")

とてもシンプルでかわいらしい

于 2012-05-16T16:03:23.107 に答える
0

あなたは出来る:

  1. 章モデルに「sortkey」整数フィールドを追加し、

  2. 各モデルのソートキーを設定します。つまり、最初に必要な章には 1、2 番目には 2 など...

  3. ソートキーがデフォルトの順序付けに使用されるように、Chapter.Meta.orderingを設定します。

次のようになります。

class Chapter(models.Model):
    heading = models.CharField()
    contents = models.TextField()
    sortkey = models.IntegerField(default=0)

    class Meta:
        ordering = ('sortkey',)
于 2012-05-16T12:59:18.560 に答える
0

order-with-respect-toDjango Meta オプションに満足していただけると思います。

メタ オプション リファレンスをご覧ください。

idin以外のフィールドを使用する方法が見つかりませんでした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と洞察で方向性を示したいだけです。

幸運を!

于 2012-05-16T16:17:11.757 に答える