1
resposta

Problemas ao salvar uma chave estrangeira no Django Rest

Olá boa noite, como seria o serializers no Django para salvar esse JSON? Não estou conseguindo.

{
   "endereco":{
      "bairro":"Teste",
      "logradouro":"Teste",
      "cep":"11111",
      "complemento":"Teste",
      "numero":"12",
      "uf":"Teste"
   },
   "datas":[
      {
         "data":"2023-02-10",
         "hora_inicio":"19:00:00",
         "hora_fim":"22:00:00"
      },
      {
         "data":"2023-02-11",
         "hora_inicio":"18:00:00",
         "hora_fim":"22:00:00"
      }
   ],
   "nome":"Teste",
   "descricao":"Teste",
   "url":"Teste",
   "gratuito":false,
   "ativo":true,
   "valor":100,
   "data":"2023-02-28",
   "tipo":{
      "id":1
   },
}

Meu serializers esta assim :

class EventosSerializer(serializers.ModelSerializer):
    datas      = EventosDataSerializer(many=True,read_only=False)
    tipo       = TipoEventoSerializer(read_only=False)
    endereco   = EnderecosSerializer(read_only=False)

        class Meta:
            model  = Eventos
            fields = "__all__"

        def create(self, validated_data):
            endereco_data = validated_data.pop('endereco')
            validated_data['endereco'] = Enderecos.objects.create(**endereco_data)
            datas_data = validated_data.pop('datas') 
            evento = Eventos.objects.create(**validated_data)
            print(evento)
            for data_data in datas_data: 
                EventosData.objects.create(evento=evento, **data_data)
            return evento

Sempre estou recebendo este error:

{
    "datas": [
        {
            "evento": [
                "Este campo é obrigatório."
            ]
        }
    ],
    "tipo": [
        "Este campo não pode ser nulo."
    ]
}

Mas o campo evento da data ta sendo setado. Alguem consegue me ajudar?

1 resposta

Olá Felipe, tudo bem com você?

Peço desculpa pela demora em responder o seu tópico.

Pelo seu código, parece que você está tentando criar um objeto "Evento" com os dados fornecidos no JSON. No entanto, você também está tentando criar objetos relacionados, como "Endereco" e "EventosData", e atribuí-los ao objeto "Evento".

Uma possível solução para esse problema seria ajustar o seu método "create" no serializer "EventosSerializer". Verifique se os dados para os campos "evento" e "tipo" estão sendo passados corretamente no JSON. Certifique-se de que eles estão presentes e não estão vazios.

Além disso, verifique se os modelos relacionados ("Enderecos" e "EventosData") estão configurados corretamente, com as chaves estrangeiras definidas corretamente.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.