Django管理界面反向关系

5
如果您在django管理页面中管理Group模型,但不知道该模型与用户存在反向关系,这可能会让一些人感到困惑。
那么,有没有办法显示所有的反向关系,以便您可以跳转到匹配的管理页面呢?
例如,在Group的管理页面上我想要一个指向用户(以及其他所有引用它的模型)的链接。
这应该通过代码实现,而不是手动添加模板。
2个回答

2

这种方法不会自动为一个组的所有相关模型添加链接,但对于与一个组相关的所有用户(因此一次只涉及一个相关模型)会自动添加链接。使用此方法,您将在组内获得与之相关的用户的内联视图。

您可以扩展此技术,使其自动适用于所有相关字段。

class UserInline(admin.StackedInline):

    model = User
    extra = 0
    readonly_fields = ('change',)

    def change(self, instance):

        if instance.id:

            # Django's admin URLs are automatically constructed
            # based on your Django app and model's name.
            change_url = urlresolvers.reverse(
                'admin:djangoapp_usermodel_change', args=(instance.id,)
            )

            return '<a class="changelink" href="{}">Change</a>'.format(change_url)

        else:
            return 'Save the group first before editing the user.'

    change.allow_tags = True


class GroupAdmin(admin.ModelAdmin):
    list_display = ('name',)
    inlines = (UserInline,)

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接