2015-11-11 44 views
0

如果我有一個模型序列化程序,其中數據庫模型中不需要first_name和last_name(blank = True,null = True,default = None),並且我選擇提交可能包含或不包含「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

在你創建的方法不一樣:

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 
相關問題