Django管理员排除子类

时间:2015-09-29 08:36:46

标签: python django django-admin

我有几个模型看起来像:

class Page(SomeBaseClass):
    # random fields


class Link(Page):
    # some other fields

在我的admin.py我注册了这些课程:

admin.site.register(Page) # shows both Pages and Links
admin.site.register(Link) # shows only Links

此时,管理员中的“页面”标签同时显示PageLink,“链接”标签仅显示Link。是否可以从“页面”标签中排除Link模型?

1 个答案:

答案 0 :(得分:4)

您可以为模型管理员覆盖get_queryset,并使用isnull过滤没有孩子的对象。

class PageAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        qs = super(PageAdmin, self).get_queryset(request)
        return qs.filter(link__isnull=True)

admin.site.register(Page, PageAdmin)