我在django管理页面上创建了两个用户。当一个用户输入数据时,另一个用户可以看到数据。 因此,每个用户都可以查看和更改彼此的数据。 我希望每个用户只能看到和更改自己的数据而不是其他用户。 我该如何预防?
答案 0 :(得分:0)
您可以根据不同的用户(基于权限或某些用户属性)更改属性(列),但不能基于此过滤元组。
示例 - (在app_name / admin.py中)
def get_readonly_fields(self, request, obj=None):
if request.user.is_superuser:
self.readonly_fields = ()
else:
self.readonly_fields = ('id', 'name', 'attr1', 'attr2')
return self.readonly_fields
但是根据给出的有限信息,我想你想要过滤元组。这只能通过使自定义管理页面与django的管理员并行来实现(例如,将其命名为工作人员面板)。在其视图方法过滤器(使用Querysets)根据学校并返回其相关数据进行编辑或任何您想要的(为了方便您可以使用模型表单)。
编辑:抱歉,我找到了你所要求的(希望如此)。
class MyModelAdmin(admin.ModelAdmin):
def get_queryset(self, request):
qs = super(MyModelAdmin, self).get_queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(author=request.user)
这将仅返回管理员更改页面上与登录用户相关的对象。
答案 1 :(得分:0)
我认为您不必使用django admin作为用户个人资料。您可以在您的网站上创建授权/身份验证系统,this is关于它的好帖子。
然后,您可以为每个用户创建用户个人资料,他们可以添加/编辑/删除他们的私人数据。