其中蠻重要的一段
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)