django serializar objetos de clave externa

  • Serializar el modelo django con modelos de clave externa
  • Serialización de objetos de clave externa en Django
  • obtener objetos de clave externa en una sola consulta – Django

Ya hay un par de preguntas que piden lo mismo. Pero son de 2010, y no me ayudó mucho. ¿Entonces me imagino que tal vez haya habido alguna actualización en este frente desde 2010?

En google encontré este enlace , que explica el uso de claves naturales . Sin embargo, mi problema se refiere a obtener objetos extraños de django.contrib.auth.models.User por lo que no ayuda.

Mi problema es el siguiente. Quiero serializar el QuerySet para obtener los objetos de clave externa también, porque quiero pasarlo como JSON al cliente. El serializador de django.core no hace eso. Así que en mi caso, simplemente por el problema, había agregado otro campo al modelo para contener el valor que necesito del objeto extraño. Pero sin embargo introducir datos redundantes.

Mi modelo de ejemplo contiene el username que me gustaría, si es posible, eliminar, y en su lugar obtenerlo por la clave externa.

  user = models.ForeignKey(User) username = models.CharField(max_length=100, null=False) 

    Una posible forma de evitar esto es construir su propio objeto de diccionario basado en los retornos de un conjunto de consultas. Harías algo como esto:

     queryset = Model.objects.all() list = [] #create list for row in queryset: #populate list list.append({'title':row.title, 'body': row.body, 'name': row.user.username}) recipe_list_json = json.dumps(list) #dump list as JSON return HttpResponse(recipe_list_json, 'application/javascript') 

    Necesitas importar json para que esto funcione.

     import json 

    Podrías usar los serializadores de marcos de Django REST.