3

管理者のインデックス内の異なるブロックにモデルを分けたいと思います (この質問を参照してください)。

それを実現するために、すべてのモデルに属性「admin_group」を追加したいと思います。次に、「admin_group」でモデルをグループ化AdminSite.app_indexするカスタムをオーバーライドして作成し、管理者のインデックスの異なるブロックに表示します。admin/app_index.html

以下に示すように、属性「admin_group」をモデルに追加するだけです。

class model1(models.Model):
    # ...
    admin_group = "group1"

class model2(models.Model):
    # ...
    admin_group = "group1"

class model3(models.Model):
    # ...
    admin_group = "group2"

しかし、よりクリーンなソリューションがあるかどうか疑問に思っています。

注: Meta オプションは使用したくありませんapp_label。データベース リクエストが台無しになるからです。

4

1 に答える 1

2

そのグループ フィールドで親クラスを作成し、すべてのモデル クラスを親クラスで継承できます。

class Parent(models.Model):
    GROUP_CHOICES = [
        (u'1', u'Group1'),
        (u'2', u'Group2'),
        ...
       ]
   admin_group = models.CharField(_("Admin group"), max_length=1, choices = GROUP_CHOICES)

class model1(Parent):
    # ...


class model2(Parent):
    # ...

model1そしてmodel2今、admin_groupフィールドを持っています。

于 2012-12-20T13:58:43.423 に答える