可以说我有一个这样的模型:
class MyModel(models.Model):
first_field = models.CharField()
second_field = models.CharField()
Run Code Online (Sandbox Code Playgroud)
和这样的API视图:
class MyModelDetailAPI(GenericAPIView):
serializer_class = MyModelSerializer
def patch(self, request, *args, **kwargs):
# Do the update
def post(self, request, *args, **kwargs):
# Do the post
Run Code Online (Sandbox Code Playgroud)
该first_field字段仅插入POST方法(并且是必需的),但在每次更新时,用户都无法更改其值,因此PATCH方法中的字段不是必需的.
如何编写我的序列化程序,以便first_field在POST时需要,但在PATCH上不需要.有没有办法动态设置所需的字段,所以我仍然可以使用DRF验证机制?每种请求方法都有某种验证器调度程序?
我想要这样的东西,例如:
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = {
'POST': ['first_field']
'PATCH': []
}
Run Code Online (Sandbox Code Playgroud) python django validation serialization django-rest-framework