Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

224
Visualizações
¿Cómo mostrar un valor de clave externa en lugar de la identificación?

Tengo los siguientes modelos:

 class FlightSchedule(models.Model): tail_number = models.ForeignKey(TailNumber, null=False) flight_number = models.CharField(max_length=30, null=False) flight_group_code = models.ForeignKey(FlightGroup, null=False) origin_port_code = models.ForeignKey(Port, null=False, related_name="Origin") destination_port_code = models.ForeignKey(Port, null=False, related_name="Destination") flight_departure_time = models.TimeField() start_date = models.DateField() end_date = models.DateField() def __unicode__(self): return u'%s' % self.flight_number class Meta: verbose_name_plural = "Flight Schedule" class FlightScheduleDetail(models.Model): flight_date = models.CharField(max_length=30, null=False) flight_number = models.ForeignKey(FlightSchedule, null=False, related_name="flight_number_schedule") route_id = models.CharField(max_length=30, null=False, unique=True) flight_status = models.ForeignKey(Status, null=True, default=1) def __unicode__(self): return u'%s' % self.route_id class Meta: verbose_name_plural = "Flight Schedule Details"

y el serializador es el siguiente:

 class FlightScheduleDetailSerializer(serializers.ModelSerializer): class Meta: model = FlightScheduleDetail fields = '__all__' class FlightScheduleSerializer(serializers.ModelSerializer): flight_number_schedule = FlightScheduleDetailSerializer(many=True) class Meta: model = FlightSchedule fields = ['tail_number', 'flight_number', 'origin_port_code', 'destination_port_code', 'flight_departure_time', 'flight_number_schedule']

Aquí tail_number , flight_number es una clave foránea. Cuando creo una API, obtengo la respuesta como la identificación de los campos. ¿Cómo puedo mostrar el nombre en el json?

Mi views.py es el siguiente:

 @api_view(['GET']) def flight_schedule(request): schedule = FlightSchedule.objects.all() serializer = FlightScheduleSerializer(schedule, many=True) return Response(serializer.data)
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Puede definir la fuente con field_name en su serializador de la siguiente manera.

He usado source='TailNumber.number' . Por favor, utilice el nombre de campo correcto en lugar del number

 class UserProfileSerializer(serializers.ModelSerializer): tail_number = serializers.CharField(source='TailNumber.number', read_only=True) flight_number = ....(change as above) class Meta: model = FlightSchedule fields = ['tail_number', 'flight_number', 'origin_port_code', 'destination_port_code', 'flight_departure_time', 'flight_number_schedule']
over 4 years ago · Santiago Trujillo Relatório

0

Simplemente podría agregarlos como si fueran atributos.

 flight_number_str = serializers.ReadOnlyField(source='flight_number.flight_number')

Primero flight_number es el atributo de FlightScheduleDetail , luego el de FlightSchedule

y luego agregarlo a la lista de campos fields = [..., 'flight_number_str']

De lo contrario, puede echar un vistazo a las relaciones anidadas en DRF que también pueden ofrecer más posibilidades.

over 4 years ago · Santiago Trujillo Relatório

0

Otra alternativa es utilizar la opción de depth en un serializador. Es para especificar serialización anidada - doc

 class AccountSerializer(serializers.ModelSerializer): class Meta: model = Account fields = ('id', 'account_name', 'users', 'created') depth = 1

Si los usuarios son una clave externa o una clave de muchos a muchos, el serializador mostrará a los usuarios como un objeto y no como una clave.

La opción de depth debe establecerse en un valor entero que indique la profundidad de las relaciones que deben atravesarse antes de volver a una representación plana.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda