Python Django RF,用于检查请求用户是否为管理员的字段级验证
我的Django Rest框架项目具有models字段,任何经过身份验证的用户都可以在其中创建模型实例 但是,我想确保只有Django管理员可以更改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
接受的
字段值
防止其他用户更改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')