问题:
在序列化程序中我应该在哪里更改initial_data
?
是否建议在initial_data
方法中更改validate_field_name()
?
validate_field_name
方法应该返回某些内容吗?
代码:
from django.contrib.auth import get_user_model
from rest_framework import serializers
class MySerializer(serializers.ModelSerializer):
def validate_owner(self,owner_id):
try:
return get_user_model().objects.get(owner_id=owner_id)
except get_user_model().DoesnotExist or get_user_model().MultipleObjectsreturned:
return owner_id
如果我没有在
initial_data
方法中更改validate_field_name
,我将提取两次数据。
例如:
from django.contrib.auth import get_user_model
from rest_framework import serializers
from rest_framework.exceptions import ValidationError
class MySerializer(serializers.ModelSerializer):
def validate_owner(self,owner_id):
try:
get_user_model().objects.get(owner_id=owner_id)
except get_user_model().DoesnotExist or get_user_model().MultipleObjectsreturned:
raise ValidationError('User does not exists.')
def create(self,validated_data):
validated_data['owner'] = get_user_model().objects.get(owner_id=validated_data['owner_id'])
# create instance