2017-06-09 6 views
0

私はこのことでちょっと混乱しています...数時間を失って、このコードの多くの変種を試しましたが、成功しませんでした。シリアライザperform_createが呼び出されていない

ContaCorrenteという関連オブジェクトを、アカウントを作成するときにUsuarioという名前で各ユーザーに作成する必要があります。

ものは私のモデルです:

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モデルは維持されますが、ContaCorrenteは保持されません!誰かに助けがありますか?ありがとう!

答えて

1

親クラスにperform_createというメソッドはありません。 createを代わりに使用してください。ソースcode

+0

「http:// www.django-rest-framework.org/topics/3.0-announcement /#changes-to-prepost-save-hooks」のために私は 'perform_create'を使用しました...ちょうど変更されました、試してみると成功しませんでした –

+0

w8、私は今、私のせいだと思います...再度展開して、試してみてください... 1分 –

+0

はエラーになります: '' UsuariosSerializer 'オブジェクトには属性' kwargs''がありません –

関連する問題