如何解决为HTTP方法实施不同的序列化策略
下面列出了型号和序列化器:
# Django Model class
class Model(models.Model):
id = models.CharField(max_length=10,primary_key=True)
name = models.CharField(max_length=30)
# DRF serializer class
class ModelSerializer(serializers.ModelSerializer):
class Meta:
fields = ["id","name"]
model = Model
如何实现序列化程序以接受和验证id
请求的HTTP POST
字段(应为唯一和最多10个字符) ),但对于PUT
的请求,应该跳过唯一验证,而只是len(id) <= 10
进行检查。
我正在寻找一种惯用的,干净的和有效的方式来做到这一点。
解决方法
惯用,清洁和高效。这些是我的最爱。 这应该足够可读。
# DRF serializer class
class ModelSerializer(serializers.ModelSerializer):
class Meta:
fields = ["id","name"]
model = Model
def validate_id(self,invalidated_id):
request = self.context['request']
# do logic based on request type and invalidated_id
# views.py
def my_weird_func(request,**kwrags):
myModelInstance = kwargs['id'] # or whatever,this is a demonstration
serializer = ModelSerializer(myModelInstance,context={'request': request})
return Response('This is what're expecting')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。