Escribir Vista de Python/Django para "unirse" en tres modelos/tablas
-
18-09-2019 - |
Pregunta
Solo comienza mi experiencia Python/Django y tengo un problema :-)
Entonces tengo un modelo.py como este:
from django.db import models
class Priority(models.Model):
name = models.CharField(max_length=100)
class Projects(models.Model):
name = models.CharField(max_length=30)
description = models.CharField(max_length=150)
priority = models.ForeignKey(Priority)
class Tasks(models.Model):
name = models.CharField(max_length=30)
description = models.CharField(max_length=40)
priority = models.ForeignKey(Priority)
En la Tabla de prioridad, planeo almacenar datos como 1.High, 2. Medium, 3.Low y en tareas La prioridad de la tabla se almacenará como ID (1, 2 o 3)
¿Y la pregunta es cómo escribir una vista que muestre todas mis tareas pero con prioridad nombrada? Por ejemplo:
name: Task 1
description: Description 1
priority: **High**
Solución
Tu punto de vista no tiene que hacer mucho.
tasks = Tasks.objects.all()
Proporcione esto a su plantilla.
Su plantilla puede hacer algo como lo siguiente.
{% for t in tasks %}
name: {{t.name}}
description: {{t.description}}
priority: **{{t.priority.name}}**
{% endfor %}
Otros consejos
Hay muchas formas de lograr lo que necesita. Uno de los más fáciles sería mantener un diccionario de número para la cadena. Así: 1-> alto, 2-> medio, 3-> alto.
Mantenga este diccionario fuera de sus funciones de vista para que pueda acceder a cualquiera de sus funciones de vista que necesiten obtener la prioridad.
También puede simplemente escribir un interruptor que determine qué mostrar en la plantilla.