Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.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 Django RF,用于检查请求用户是否为管理员的字段级验证_Python_Django_Django Rest Framework - Fatal编程技术网

Python Django RF,用于检查请求用户是否为管理员的字段级验证

Python Django RF,用于检查请求用户是否为管理员的字段级验证,python,django,django-rest-framework,Python,Django,Django Rest Framework,我的Django Rest框架项目具有models字段,任何经过身份验证的用户都可以在其中创建模型实例 但是,我想确保只有Django管理员可以更改接受的字段值 防止其他用户更改accepted字段的最佳方法是什么 请注意,我希望为经过身份验证的用户保留创建模型实例的权限,保持默认值已接受字段 MODELS.PY class PO(models.Model): name = models.CharField(max_length=100) accepted=models.Bool

我的Django Rest框架项目具有models字段,任何经过身份验证的用户都可以在其中创建模型实例

但是,我想确保只有Django管理员可以更改
接受的
字段值

防止其他用户更改
accepted
字段的最佳方法是什么

请注意,我希望为经过身份验证的用户保留创建模型实例的权限,保持默认值
已接受
字段

MODELS.PY

class PO(models.Model):
    name = models.CharField(max_length=100)
    accepted=models.BooleanField(default=False) # I want this field to be changed only by admin user
VIEWS.PY

class POcreate(generics.CreateAPIView):
    queryset = PO.objects.all()
    serializer_class = POserializer
    permission_classes = [permissions.IsAuthenticated]
序列化程序.PY

class POserializer(serializers.ModelSerializer):
    class Meta:
        model=PO
        fields='__all__'

更改了视图层和序列化程序


 def get_serializer_class(self):
        if self.request.user.is_staff:
            return POAdminserializer
        return POserializer

任何建议或指示都是值得赞赏的
class POAdminserializer(serializers.ModelSerializer):
    class Meta:
        model=PO
        fields='__all__'


class POserializer(serializers.ModelSerializer):
    class Meta:
        model=PO
        exclude=('created','accepted','delivered','rejected','rejected_reason')