Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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_Python 3.x_Django Admin - Fatal编程技术网

Django管理站点中的不同字段集取决于用户组

Django管理站点中的不同字段集取决于用户组,django,python-3.x,django-admin,Django,Python 3.x,Django Admin,在我的django管理站点中,我想向组控制器组中的用户隐藏一些字段 最好的方法是什么?我们可以这样做吗 这是我的代码,但不起作用: admin.py: class PriceFile(admin.ModelAdmin): if User.groups.filter(name='Controllers').exists(): fieldsets = [(None, {'fields':['print_url', ('model', 'client'), 'descripti

在我的django管理站点中,我想向组控制器组中的用户隐藏一些字段

最好的方法是什么?我们可以这样做吗

这是我的代码,但不起作用:

admin.py:

class PriceFile(admin.ModelAdmin):
    if User.groups.filter(name='Controllers').exists():
        fieldsets = [(None, {'fields':['print_url', ('model', 'client'), 'description']})]  
    else:
        fieldsets = [(None, {'fields':['print_url', ('model', 'client'), 'description', 'total_sum', 'margin_percent', 'final_price']})]

你已经解决了吗

Django Admins有一个名为get_fieldset的方法,您可以使用该方法来决定可以使用哪个字段集来添加。您的配置可能如下所示:

@admin.register(ModelName)
class ModelAdmin(admin.ModelAdmin):

    def get_fieldsets(self, request, obj=None):
        if request.user.is_superuser:
            return self.superuser_fieldsets
        else:
            return self.staff_fieldsets

    staff_fieldsets =  (
        (None, {'fields': ('regular_field_a', 'regular_field_b')})
    )

    superuser_fieldsets =  (
        (None, {'fields': ('regular_field_a', 'regular_field_b')}),
        (None, {'fields': ('super_user_field_a', 'super_user_field_b')})
    )
函数get_fieldset可以访问请求和对象,我在这里所做的是取决于用户的状态是_superuser。在本例中,我们提供了一个不同的字段集。您可以添加自己的需求,例如,如果用户是身份验证组的一部分,或者取决于您看到的对象