Hola a todos
Necesito mostrar en una tabla un listado de clientes que pertenecen a un municipio y a un sector
Municipios y Sectores son dos tablas relacionadas con clientes
Obteniendo los datos de la tabla clientes, me muestra los id de municipio y sector, y lo que quiero es que me muestre el nombre del municipio y el nombre del sector, obteniendolo a traves de la llave foreingkey (como lo he hecho con yii2)
En Django como se puede hacer esto?
He visto que el panel de administración de django lo hace, así que debe haber una forma de hacerlo
Logre hacerlo agregando en el modelo la siguiente función:
Cita: def natural_key(self):
return self.nombre_campo_a_mostrar
Pero ahora los datos se cargan muy lento, y es en el proceso de serializar el JSON
Habrá alguna forma mas rápida de hacerlo?
(20-10-2020, 03:19 PM)Francisco escribió: [ -> ]Hola.
No creo que debas usar una natural key para este caso. ¿Definiste el método __str__() en tus modelos Municipio y Sector? Podés ver un ejemplo acá: https://developer.mozilla.org/es/docs/Le...ngo/Models.
Saludos
Gracias por tu respuesta
Pues si tengo definidos los métodos __str__ en todos los modelos, no se porque no me los pone en el JSON
Si no crees que deba usar natural key, quizás es que deba armar el JSON de otra forma
Para crear el JSON lo hago así, segun un tutorial que encontré:
Cita:def get(self, request, *args, **kwargs):
if request.is_ajax():
data = serialize('json', self.get_queryset(), use_natural_foreign_keys=True)
return HttpResponse(data, 'application/json')
else:
return redirect('clientes:listado')
Podrias indicarme otra forma de obtener el JSON ?
Hola.
Esa forma está bien. Sin ver el código, lo que intentaría es simplificar el QuerySet para que no tarde tanto en serializar (capaz hay cosas que estás trayendo de la base de datos y no necesitás serializar), o bien no utilizar las natural keys (si ves que esto evidentemente ralentiza mucho el proceso) y obtener las representaciones de tus municipios y sectores con una consulta propia. O sea, en vez de pasarle directamente un QS a serialize(), deberías crear tu estructura (seguramente una lista con diccionarios) antes de llamar a serialize().
Recordá que podés usar django-debug-toolbar para ver las consultas que se están ejecutando y así averiguar qué es lo que ralentiza el proceso.
Saludos!