3

我想在我的管理员索引中将我的模型分成不同的块(见这个问题)。

为了实现这一点,我想为我的所有模型添加一个属性“admin_group”。然后我将覆盖AdminSite.app_index并创建一个自定义admin/app_index.html以按“admin_group”对模型进行分组,并在我的管理员索引中的不同块中显示它们。

我可以在我的模型中添加一个属性“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现在model2admin_group领域。

于 2012-12-20T13:58:43.423 回答