La scrittura Python/Django vista, per “unire” in tre modelli/tabelle
-
18-09-2019 - |
Domanda
Appena inizia il mio Python/Django esperienza e ho un problema :-)
Quindi ho un model.py come questa:
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)
Nella tabella priorità ho intenzione di memorizzare i dati come 1.Alta, 2.Medio , 3.Basso e nella tabella delle Attività priorità verrà archiviato come id (1, 2 o 3)
E la domanda è: come scrivere una vista che visualizza tutte le mie attività, ma con Priorità di nome?Per esempio:
name: Task 1
description: Description 1
priority: **High**
Soluzione
La vista non deve fare molto.
tasks = Tasks.objects.all()
Fornire questo al vostro modello.
Il modello può quindi fare qualcosa di simile alla seguente.
{% for t in tasks %}
name: {{t.name}}
description: {{t.description}}
priority: **{{t.priority.name}}**
{% endfor %}
Altri suggerimenti
Ci sono molti modi di realizzare ciò di cui avete bisogno.Uno dei modo più semplice sarebbe quello di mantenere un dizionario di numero a stringa.Come questa:1->Alta, 2->Medio, 3->Alto.
Mantenere questo dizionario al di fuori delle funzioni, in modo che si può accedere da qualsiasi delle funzioni che devono avere la priorità.
Si potrebbe anche scrivere semplicemente un interruttore che determina cosa visualizzare nel modello.