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
は保持されません!誰かに助けがありますか?ありがとう!
「http:// www.django-rest-framework.org/topics/3.0-announcement /#changes-to-prepost-save-hooks」のために私は 'perform_create'を使用しました...ちょうど変更されました、試してみると成功しませんでした –
w8、私は今、私のせいだと思います...再度展開して、試してみてください... 1分 –
はエラーになります: '' UsuariosSerializer 'オブジェクトには属性' kwargs''がありません –