One.save
One of the most important passages
if self.instance is not None: self.instance = self.update(self.instance, validated_data) assert self.instance is not None, ( '`update()` did not return an object instance.' ) else: self.instance = self.create(validated_data) assert self.instance is not None, ( '`create()` did not return an object instance.' ) return self.instance
It's obvious here that save s our instance parameter because it determines whether it runs create or updata method in the future.
We can also customize the Create method and updata method without saving, because the essence of it is to call the create and updata methods.
Note: Our custom priority must be greater than the priority of the method that comes with drf, so it's appropriate for us to create these two methods in the model
Two.response
The parameters
#Input parameters def __init__(self, data=None, status=None, template_name=None, headers=None, exception=False, content_type=None): #His assignment of parameters self.data = data self.template_name = template_name self.exception = exception self.content_type = content_type
We can modify the source code by inheriting classes
""" //Return value Response({ 'status': 0, 'msg': 'ok', 'results': [], 'token': '' }, headers={}, status=200, content_type="") """ ''' //Let's say what we want. APIResponse(0, 'ok', results,Other data) ''' from rest_framework.response import Response class APIResponse(Response): def __init__(self, data_status, data_msg, results=None, status=None, headers=None, content_type=None, **kwargs): data = { 'status': data_status, 'msg': data_msg } if results is not None: data['results'] = results data.update(kwargs) super().__init__(data=data, status=status, headers=headers, content_type=content_type)