Django管理员反向关系

时间:2014-03-21 12:05:09

标签: django django-admin

如果您在模型组的django管理页面上。您不知道与用户存在反向关系。

有些人(不是我)有困难。

有没有办法显示所有反向关系,以便您可以跳转到匹配的管理页面?

示例:

在组I的管理页面上,我想要一个指向User(以及引用它的所有其他模型)的链接。

这应该通过代码实现,而不是手工使用模板。

2 个答案:

答案 0 :(得分:1)

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

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

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 :(得分:1)

您可能也对我为Django管理页面创建的此扩展感兴趣,以链接到相关对象:

https://github.com/gitaarik/django-admin-relation-links

它非常易于使用,并且使管理员更方便使用:)。