Django Admin:显示模型列表

时间:2016-01-18 06:51:53

标签: django django-admin

我正在使用Django 1.8.8

我有很多模型定义如下:

class MainModel(models.Model):
    value = models.IntegerField(null=False, editable=True, default=20)
    dt_modified = models.DateTimeField(null=True, auto_now=True)

class MyModel1(MainModel, models.Model):
    name = models.CharField(null=False, editable=False, max_length=50)

class MyModel2(MainModel, models.Model):
    foo = models.CharField(null=False, editable=False, max_length=50)

我的管理页面目前正在设置,

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('value', 'dt_modified')
    search_fields = ['value']
    date_hierarchy = 'dt_modified'

models = [MyModel1, MyModel2]
admin.site.register(models, MyModelAdmin)

我想按如下方式设置管理页面: 首页上有一个链接/admin," MainModels"它将我引导到另一个页面,我可以从MyModel的所有派生模型的列表中进行选择,即[MyModel1, MyModel2, ....MyMoneyN],它允许我编辑所选的派生模型。 MyModel#

上面代码的问题是它为每个编号模型创建了一个顶级链接。

2 个答案:

答案 0 :(得分:1)

您需要自己的更改列表才能执行此操作:

class MyChangeList(ChangeList):
    def url_for_result(self, result):
        link = your_function_to_create_link()
        return link

然后在Changelist中使用ModelAdmin

class MyModelAdmin(admin.ModelAdmin):
    def get_changelist(self, request, **kwargs):
        return MyChangeList

答案 1 :(得分:1)

您最好使用Grapelli或其他自定义管理员替代品。您可以使用不同的模型集设置自定义页面,默认情况下调整隐藏/显示等。尝试使用vanilla admin执行此操作将会出现问题。

这是一个与你想用grappelli

做什么接近的例子
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _
from grappelli.dashboard import modules, Dashboard

class MyDashboard(Dashboard):
    def __init__(self, **kwargs):
        Dashboard.__init__(self, **kwargs)

        # append an app list module for "Applications"
        self.children.append(modules.AppList(
            title=_('Applications'),
            column=1,
            css_classes=('grp-collapse grp-closed',),
            collapsible=True,
            exclude=('django.contrib.*',),
        ))