Django 管理面板中特定字段的权限

Permission to specific field in Django admin panel

我在 Django 中有一个模型,我想从管理面板向它添加实例。

几乎没有用户可以访问管理面板来为模型创建新帖子,我有 2 个问题:

  1. 是否可以检测 用户在面板中以自动检测字段 "Author"? (见图中红色矩形)

  2. 我可以禁用特定用户将 "Published" 字段标记为 true 的选项吗? (见图中绿色矩形)

对于预填充字段,您可以覆盖 get_form 方法:

def get_form(self, request, obj=None, **kwargs):
    form = super().get_form(request, obj, **kwargs)
    form.base_fields['author'].initial = request.user
    return form

对于禁用字段,您也可以覆盖...get_readonly_fields

class YourModelAdmin(admin.ModelAdmin):

    readonly_fields = ('whatever', ) # whatever fields you have by default
    limited_fiels = ('published', )

    def get_readonly_fields(self, request, obj=None):
        if request.user.groups.filter(name='YourPermissionGroupName').exists():
            return self.limited_fiels
        return super().get_fieldsets(request, obj=obj)

您可能还需要覆盖 get_fields 以从可变字段列表中删除 published