其中蛮重要的一段
python
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
这里呢很明显就能够看出save
咱们传参instance
的因为决定了他后续是运行create
仍是updata
方法rest
咱们也能够不用save,能够自定义create 方法和updata方法由于他本质就是调用create和updata方法code
注意点
:咱们自定义优先级必须大于drf自带的方法的优先级,全部咱们把这两个方法建立在模型中比较合适继承
其中的参数token
#传入的参数 def __init__(self, data=None, status=None, template_name=None, headers=None, exception=False, content_type=None): #他对于参数进行的赋值 self.data = data self.template_name = template_name self.exception = exception self.content_type = content_type
咱们能够经过类的继承来修改源码源码
""" 返回值 Response({ 'status': 0, 'msg': 'ok', 'results': [], 'token': '' }, headers={}, status=200, content_type="") """ ''' 好比说咱们想要的效果 APIResponse(0, 'ok', results,其余数据) ''' 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)