Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 是否有一种只有超级用户才能添加/编辑的字段?_Django_Django Models_Django Admin_Wagtail - Fatal编程技术网

Django 是否有一种只有超级用户才能添加/编辑的字段?

Django 是否有一种只有超级用户才能添加/编辑的字段?,django,django-models,django-admin,wagtail,Django,Django Models,Django Admin,Wagtail,是否有一种只有超级用户才能添加/编辑的字段 class ProductPage(Page): price = models.IntegerField(blank=True) description = RichTextField(blank=True) featured = models.BooleanField(default=False) 以上是我模型的一部分,但我只希望超级用户访问“特色”字段。我假设您的意思是,只有登录到Django管理站点的超级用户才能编辑“特

是否有一种只有超级用户才能添加/编辑的字段

class ProductPage(Page):
    price = models.IntegerField(blank=True)
    description = RichTextField(blank=True)
    featured = models.BooleanField(default=False)

以上是我模型的一部分,但我只希望超级用户访问“特色”字段。

我假设您的意思是,只有登录到Django管理站点的超级用户才能编辑“特色”字段。如果要限制对自己的表单和视图的访问,只需检查用户的状态并相应地自定义表单/视图。以下是您可以在admin.py中的
ModelAdmin
中执行的操作:

def get_readonly_fields(self, request):
    fields = super().get_readonly_fields(request)
    if not request.user.is_superuser:
        fields.append('featured')
    return fields

我尝试了@dirkgroten给出的解决方案,但必须做一些更改才能使其生效

根据Django的for>2.1版本,
get\u readonly\u字段
包含3个参数

此外,字段需要设置一个要追加的列表,因为它会在默认情况下创建一个元组

def get_readonly_fields(self, request, obj=None):
    fields = list(super().get_readonly_fields(request))
    if not request.user.is_superuser:
        fields.append('featured')
    return fields