我有一个要共享的数据库。如果对象具有特定值,我需要特定用户能够查看和编辑它。没有其他用户可以查看或编辑这些对象。
我想知道应该怎样做才能做到这一点。我不太了解django。我目前正在寻找有关观点的条件。不确定这是否可能,因为我不知道视图上的条件是否可以过滤对象。
如果有人能指出我正确的方向,我会非常感激。
答案 0 :(得分:1)
您应该使用视图来限制用户可以看到和可以做的事情。例如,要限制用户只能查看由他们创建的列表的列表,请告诉视图中的查询仅获取创建的用户等于请求用户的列表。使用模型视图,您可以修改函数以获取所需的数据。如果您将获取查询集功能更改为仅获取用户是请求用户的位置,则可以获得所需内容。
def get_queryset(self):
return self.model.objects.filter(user=self.request.user)
视图是用户获取数据的逻辑,因此您可以在那里设置条件。
对于更新,您在更新视图中请求表单之前进行了验证。 这告诉代码,如果用户请求的对象是由该用户创建的注释,则然后拒绝该权限。
def dispatch(self, request, *args, **kwargs):
obj = self.get_object()
if obj.user != self.request.user:
raise PermissionDenied # HTTP 403
else:
return super(UpdateView, self).dispatch(request, *args, **kwargs)
将这些功能放在视图类中,并确保在模型上包含用户字段。