Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何仅允许超级用户编辑模型_Python_Django_Rest - Fatal编程技术网

Python 如何仅允许超级用户编辑模型

Python 如何仅允许超级用户编辑模型,python,django,rest,Python,Django,Rest,我有两个模型:配方和Inridient,我希望只有超级用户才能编辑模型Inridient,普通用户只能查看Inridient,不能编辑它们。现在是这样设置的,如果您登录,您拥有所有权限,但我希望只有超级用户能够编辑InGridents,而普通登录用户能够添加配方(不能编辑InGridents) #views.py #models.py #序列化程序.py class IngridientSerializer(serializers.ModelSerializer): class Meta

我有两个模型:配方和Inridient,我希望只有超级用户才能编辑模型Inridient,普通用户只能查看Inridient,不能编辑它们。现在是这样设置的,如果您登录,您拥有所有权限,但我希望只有超级用户能够编辑InGridents,而普通登录用户能够添加配方(不能编辑InGridents)

#views.py

#models.py

#序列化程序.py

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
        )