我是django rest框架的新手,我正在尝试在同一个请求中创建/更新2个对象:
class PessoaSerializer(serializers.ModelSerializer):
user = UserSerializer(required=False)
class Meta:
model = Pessoa
fields = ('id', 'user', 'nome', 'email', 'cargo', 'fone', 'cep', 'celular', 'endereco', 'observacao', 'municipio')
def create(self, validated_data):
usuario = User()
usuario.first_name = validated_data.get('nome')
usuario.username = validated_data.get('email')
usuario.last_name = validated_data.get('nome') #TODO
usuario.email = validated_data.get('email')
usuario.is_active = True
usuario.is_staff = False
usuario.is_superuser = False
usuario.set_password(validated_data.get('email')) #TODO
usuario.last_login = datetime.datetime.now()
usuario.date_joined = datetime.datetime.now()
usuario.save()
validated_data['user'] = usuario
return Pessoa.objects.create(**validated_data)
def update(self, instance, validated_data):
#TODO
这是最好的方法吗?或者我错过了什么?
答案 0 :(得分:0)
尝试以下代码:
def create(self, validated_data):
user_data = validated_data.pop('user')
pessoa = Pessoa.objects.create(**validated_data)
pessoa.user.add(user_data)
return pessoa