【问题标题】:Django Admin permission just for inlines仅用于内联的 Django 管理员权限
【发布时间】:2014-11-04 09:09:28
【问题描述】:

我有一个 ModelAdmin (A),它是另一个 ModelAdmin (B) 的内联。 我想为 A 授予用户 (U) 管理员权限(添加、更改和删除)。 我给了用户他需要的所有权利(我认为): is_staff: True |可以添加、更改、删​​除A。 问题是你在管理面板上看不到内联 A。如果我也给他 B 的权限,它可以工作,但我不想让他修改那个模型。 在这些情况下,模型 B 是否存在某种“只读”?

【问题讨论】:

    标签: django admin


    【解决方案1】:

    管理界面用于编辑,如果您希望允许某些用户编辑模型 A 而不允许模型 B 编辑,请将 A 添加为 ModelAdmin,并且只允许这些用户管理(添加、编辑、删除)模型 A。

    class AAdmin(admin.ModelAdmin):
        ...
    
    class AInline(GenericTabularInline):
        model = A
        ...
    
    class BAdmin(admin.ModelAdmin):
        inlines = [
            AInline,
        ]
        ...     
    
    admin.site.register(A, AAdmin)
    admin.site.register(B, BAdmin)
    
    
    
    a_user.user_permissions.add('my_app.add_a', 'my_app.change_a', 'my_app.delete_a')
    b_user.user_permissions.add('my_app.add_b', 'my_app.change_b', 'my_app.delete_b')
    

    【讨论】:

    • 感谢您的回答,我明白了!只是对于未来的用户,我认为您在编写 inlines = [BInline,] 时犯了一个错误...认为您想要编写 inlines = [AInline,]
    猜你喜欢
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    相关资源
    最近更新 更多