1

次のようなモデルを使用した単純な投票アプリケーションがあります。

class Question(models.Model):
    text = models.CharField(max_length=250)
    position = models.PositiveIntegerField(default=0)

class Variant(models.Model):
    question = models.ForeignKey(Question, related_name=u"variants")
    text = models.CharField(max_length=250)
    position = models.PositiveIntegerField(default=0)

これらのバリアントを最初に質問ごとに、次に位置ごとに管理変更リストでソートして、他の質問のバリアントと混同しないようにしたいと思います。ただし、ModelAdmin で順序を指定するだけでは効果がありません。

class VariantAdmin(admin.ModelAdmin):
    list_display = ['text', 'question', 'position']
    ordering = ['question', '-position']

「質問」の順序に関係なく、より大きな位置にあるバリアントが上位にリストされます。

これを行う方法はありますか?

4

1 に答える 1

0

この質問を書いている間、私は解決策を見つけようとしましたが、最終的にそれを見つけました。

モデル「バリアント」には、メタ クラスで指定された順序がありました。

class Variant(models.Model):
    question = models.ForeignKey(Question, related_name=u"variants")
    text = models.CharField(max_length=250)
    position = models.PositiveIntegerField(default=0)

    class Meta:
        ordering = ['-position']

これは、モデル管理で設定された順序を上書きしていました。これを削除した後、すべてが期待どおりに機能し始めました。

于 2012-06-10T10:32:47.607 に答える