如果我有一个模型序列化程序,其中db模型中不需要first_name和last_name(空白= True,null = True,默认=无),我选择提交可能包含或不包含“json”的json数据first_name“或”last_name“字段,不应该在validated_data []中存在这些字段,无论它们是否未通过json请求提交,因为它们列在序列化程序字段中并且其默认值设置为None?
如果我在json POST请求中未提交“first_name”或“last_name”,则会出现密钥错误。
class UserCreateSerializer(serializers.ModelSerializer):
class Meta:
model = get_user_model()
fields = ('id', 'email', 'first_name', 'last_name')
read_only_fields = ('id',)
def create(self, validated_data):
user = get_user_model().objects.create(
email=validated_data['email'],
first_name=validated_data['first_name'],
last_name=validated_data['last_name']
)
user.save()
return user
答案 0 :(得分:0)
In your create method do like:
def create(self, validated_data):
user = get_user_model().objects.create(
email=validated_data['email'],
first_name=validated_data.get('first_name',''),
last_name=validated_data.get('last_name','')
)
user.save()
return user