Luí*_*reu 2 django django-admin python-3.x
在我的 django 管理站点中,我想向组(控制器组)内的用户隐藏一些字段
最好的方法是什么?我们可以做这样的事情吗?
这是我的代码,但它不起作用:
管理员.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']})]
Run Code Online (Sandbox Code Playgroud)
小智 8
你已经解决这个问题了吗?
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')})
)
Run Code Online (Sandbox Code Playgroud)
该函数get_fieldsets可以访问请求和对象,我在这里所做的是根据用户的状态(is_superuser在本例中)我们提供不同的字段集。您可以添加自己的要求,例如,用户是否属于身份验证组,或者是否取决于您所看到的对象。
| 归档时间: |
|
| 查看次数: |
1444 次 |
| 最近记录: |