gpt4 book ai didi

Django REST 框架 : restrict data records access to the users created them

转载 作者:行者123 更新时间:2023-12-01 11:41:13 25 4
gpt4 key购买 nike

我想弄清楚,使用 Django 管理模型访问权限的最佳方法是什么。

我有一个属于创建它们的用户的项目表。所有项目都通过 RESTful API 进行管理。使用此 API 时,我想限制对给定用户创建的项目的访问。

我是否必须创建多个表,或者是否可以只用一个表实现相同的目的?如果我必须使用多个表,如何将 API 请求与特定表相关联?

最佳答案

好的,我找到了一种通过 API 和管理来完成的方法。这与 Rob 的想法基本相似。

首先,每次我通过管理面板创建新用户时,我都需要将用户附加到我的项目中:

class MyAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
if getattr(obj, 'user', None) is None:
obj.user = request.user
obj.save()

admin.site.register(MyItem, MyAdmin)

然后当访问我的模型时,我只是按用户过滤(顺便说一句,这是 django.contrib.auth.models.User 的外键):

MyItem.objects.filter(user=request.user)

最后为了让它与 Django REST Framework 一起工作,我需要向我的自定义 ModelViewSet 添加几个方法:

class MyItemViewSet(viewsets.ModelViewSet):
model = MyItem
serializer_class = MyItemSerializer

def get_queryset(self):
return MyItem.objects.filter(user=self.request.user)

def pre_save(self, obj):
obj.user = self.request.user

我使用文档和(大量)反复试验来解决这个问题。

关于Django REST 框架 : restrict data records access to the users created them,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20529529/

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