すべての情報を1つのJSONオブジェクトに保存しようとしています。関係 "establecimientos"を削除すると、エラーは発生しませんが、 "establecimientos"を含めると、次のエラーが発生します。Django TypeError: 'formas_pago'は、この関数の無効なキーワード引数です。
Error: TypeError: 'formas_pago' is an invalid keyword argument for this function
このエラーは、ライン上で発生します。私のシリアライザクラスのnegocio = Negocio.objects.create(**validated_data)
シリアライザクラス
これはserializadoraクラスの仕事で正しくこの行まで(establecimientos_data = validated_data.pop( 'establecimientos '))
class NegocioSerializer(ModelSerializer):
establecimientos = EstablecimientoSerializer(many=True)
class Meta:
model = Negocio
fields = ('id','nombre', 'slug', 'fecha_creado', 'tipos_negocio','formas_pago', 'propietario', 'establecimientos')
read_only_fields = ('propietario',)
def create(self, validated_data):
establecimientos_data = validated_data.pop('establecimientos')
negocio = Negocio.objects.create(**validated_data)
for establecimiento_data in establecimientos_data:
Establecimiento.objects.create(negocio=negocio, **establecimiento_data)
return negocio
モデルクラス
class Negocio(models.Model):
nombre = models.CharField(max_length=255)
slug = models.CharField(max_length=255)
logo = models.FileField(upload_to=upload_logo_to)
fecha_creado = models.DateTimeField(auto_now=True)
propietario = models.ForeignKey(User)
tipos_negocio = models.ManyToManyField('TipoNegocio')
formas_pago = models.ManyToManyField('FormaPago')
def __str__(self):
return self.nombre
def get_establecimiento(self):
establecimientos = Establecimiento.objects.filter(negocio=self)
return establecimientos
class TipoNegocio(models.Model):
tipo = models.CharField(max_length=255)
def __str__(self):
return self.tipo
class Establecimiento(models.Model):
nombre = models.CharField(max_length=255)
direccion = models.TextField()
telefono = models.CharField(max_length=255)
negocio = models.ForeignKey('Negocio', related_name='establecimientos')
def __str__(self):
return u'{0} - {1}'.format(self.negocio, self.nombre)
def get_horarios(self):
horarios = Horario.objects.filter(establecimiento=self)
return horarios
class FormaPago(models.Model):
forma_pago = models.CharField(max_length=255)
def __str__(self):
return self.forma_pago
JSON
{
"nombre": "nuevo",
"slug": "nuev",
"tipos_negocio": [
2,
3
],
"formas_pago": [
1
],
"establecimientos": [{
"nombre": "Matriz",
"direccion": "asasasas",
"telefono": "0997739485",
"horarios": []
},
{
"nombre": "bbb",
"direccion": "sassdd",
"telefono": "445588",
"horarios": []
}]
}
にそれを追加する必要があり、これは解決策が、なぜ彼らは唯一の多対多、ジャンゴあるときかもしれませんどのように保存するかを知っていますか?この例では、自動的に "forma_pago"が追加された場合、モデル "Negocio"の "Establecimiento"を削除します。 – user3417635