gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:55:24 27 4
gpt4 key购买 nike

在我的 django 管理站点中,我想向组( Controller 组)中的用户隐藏一些字段

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

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

管理员.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_fieldsets 的方法,您可以使用它来决定可以使用哪个字段集来添加。你可以看起来像下面这样:

@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_fieldsets 函数可以访问请求和对象,我在这里所做的取决于我们服务的用户状态(is_superuser)不同的字段集。您可以添加自己的要求,例如如果用户是身份验证组的一部分,或者它是否取决于您看到的对象。

关于django - Django 管理站点中的不同字段集取决于用户组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57208457/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com