序列化程序perform_create未被调用

时间:2017-06-09 01:50:49

标签: django python-3.x django-rest-framework

我对这件事有点混乱......失去了几个小时,并尝试了很多代码的变体,但没有成功。

我需要在创建帐户时为每个用户创建一个名为ContaCorrente的相关对象{。{1}}。

这些是我的模特:

Usuario

这是我的Serializers:

class Usuario(models.Model):
    """Classe que ira gerir o cliente final, cadastrado via APP ou Webapp"""
    nome = models.CharField(max_length=60)
    sobrenome = models.CharField(max_length=60)
    telefone = models.CharField(max_length=20)
    .... FOR THE SAKE OF BREVITY

    def __str__(self):
        return self.nome + ' ' + self.sobrenome

class ContaCorrente(models.Model):
    """Controle financeiro do Cliente/Usuario cadastrado"""
    pontos = models.DecimalField(max_digits=10, decimal_places=2, default=0)
    saldo_reais = models.DecimalField(max_digits=10, decimal_places=2, default=0)
    usuario = models.OneToOneField(Usuario, on_delete=models.CASCADE, related_name='conta_corrente')

我确实尝试了很多这个代码的变种,但无法找到它爆炸的地方。

class ContaCorrenteSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = ContaCorrente fields = ('pontos', 'saldo_reais', 'usuario_id') class UsuariosSerializer(serializers.HyperlinkedModelSerializer): conta_corrente = ContaCorrenteSerializer(read_only=True) id = serializers.ReadOnlyField() class Meta: model = Usuario fields = ( 'id', 'nome', 'sobrenome', 'telefone', ... FOR THE SAKE OF BREVITY ... 'updated_at', 'conta_corrente' ) def perform_create(self, serializer): conta = ContaCorrente.objects.create(usuario_id=self.kwargs.get('pk'), saldo_reais=0, pontos=0) conta.save() serializer.save() return serializer 模型得到保留,但Usuario没有!有人帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:1)

父类中没有perform_create这样的方法。 请尝试使用create。来源code