Python 如何仅允许超级用户编辑模型
我有两个模型:配方和Inridient,我希望只有超级用户才能编辑模型Inridient,普通用户只能查看Inridient,不能编辑它们。现在是这样设置的,如果您登录,您拥有所有权限,但我希望只有超级用户能够编辑InGridents,而普通登录用户能够添加配方(不能编辑InGridents) #views.py #models.py #序列化程序.pyPython 如何仅允许超级用户编辑模型,python,django,rest,Python,Django,Rest,我有两个模型:配方和Inridient,我希望只有超级用户才能编辑模型Inridient,普通用户只能查看Inridient,不能编辑它们。现在是这样设置的,如果您登录,您拥有所有权限,但我希望只有超级用户能够编辑InGridents,而普通登录用户能够添加配方(不能编辑InGridents) #views.py #models.py #序列化程序.py class IngridientSerializer(serializers.ModelSerializer): class Meta
class IngridientSerializer(serializers.ModelSerializer):
class Meta:
model = Ingridient
fields = ('name', 'quantity', 'calories', 'protein', 'carbon', 'fiber', 'fat',
'saturated_fat')
class RecipeSerializer(serializers.ModelSerializer):
Ingridients = IngridientSerializer(many=True)
class Meta:
model = Recipe
fields = ('title', 'description', 'image', 'galery', 'kitchen_type', 'num_persons',
'preparation_steps', 'Ingridients')
如果您愿意为您的配料模型进行设置(即,添加一个“配料编辑器”组,并将所有超级用户添加到该组,然后允许这些用户编辑配料),则可以使用permissions类,而不是
IsAuthenticatedOrReadOnly
如果您确实只想授予所有超级用户写权限,那么您可以进行调整
差不多
class IsAdminOrReadOnly(BasePermission):
def has_permission(self, request, view):
return bool(
request.method in SAFE_METHODS or
request.user and
request.user.is_superuser
)
然后改为使用该权限类。如果您愿意改为为设置配料模型(即添加“配料编辑器”组,并将所有超级用户添加到该组,然后允许这些用户编辑配料),则可以使用权限类而不是
IsAuthenticatedOrReadOnly
如果您确实只想授予所有超级用户写权限,那么您可以进行调整
差不多
class IsAdminOrReadOnly(BasePermission):
def has_permission(self, request, view):
return bool(
request.method in SAFE_METHODS or
request.user and
request.user.is_superuser
)
然后改为使用该权限类。您的用户代码是什么样子的?您可以在其中设置一个角色,说明他们是否可以编辑食谱。因此,在编辑菜谱的地方,对具有编辑或不编辑标志的用户类进行简单检查,然后为具有编辑角色的人或超级用户添加一个按钮进行编辑。我正在执行restful API,因此我无法执行按钮。您的用户代码是什么样子的?您可以在其中设置一个角色,说明他们是否可以编辑食谱。因此,在编辑菜谱的地方,对具有编辑或不编辑标志的用户类进行简单检查,然后为具有编辑角色的人或超级用户添加一个按钮进行编辑。我正在使用restful API,因此我无法使用按钮。
class IsAdminOrReadOnly(BasePermission):
def has_permission(self, request, view):
return bool(
request.method in SAFE_METHODS or
request.user and
request.user.is_superuser
)