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

Django管理面板中特定字段的权限,django,django-models,django-templates,django-admin,Django,Django Models,Django Templates,Django Admin,我在Django中有一个模型,我想从管理面板向它添加实例 我有几个用户可以访问管理面板来创建模型的新帖子,我有两个问题: 可以检测面板中的开关用户,以自动检测“作者”字段?(参见图中的红色矩形) 我是否可以禁用特定用户的选项以将“已发布”字段标记为true?(参见图中的绿色矩形) 对于预填充字段,您可以覆盖方法: 对于禁用字段,您可以覆盖。。。以及: 您可能还需要重写以从可更改字段列表中删除已发布的 def get_form(self, request, obj=None, **kwargs):

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

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

  • 可以检测面板中的开关用户,以自动检测“作者”字段?(参见图中的红色矩形)

  • 我是否可以禁用特定用户的选项以将“已发布”字段标记为true?(参见图中的绿色矩形)


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

    对于禁用字段,您可以覆盖。。。以及:

    您可能还需要重写以从可更改字段列表中删除
    已发布的

    def get_form(self, request, obj=None, **kwargs):
        form = super().get_form(request, obj, **kwargs)
        form.base_fields['author'].initial = request.user
        return form
    
    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)