Escrevendo Python/Django View para "participar" em três modelos/tabelas
-
18-09-2019 - |
Pergunta
Basta começar minha experiência em Python/Django e tenho um problema :-)
Então eu tenho um modelo.py assim:
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)
Na tabela prioritária, planejo armazenar dados como 1.High, 2.Medium, 3.Low e na tabela de tarefas A prioridade será armazenada como ID (1, 2 ou 3)
E a questão é como escrever uma visão que exibe todas as minhas tarefas, mas com prioridade nomeada? Por exemplo:
name: Task 1
description: Description 1
priority: **High**
Solução
Sua visão não precisa fazer muito.
tasks = Tasks.objects.all()
Forneça isso ao seu modelo.
Seu modelo pode fazer algo como o seguinte.
{% for t in tasks %}
name: {{t.name}}
description: {{t.description}}
priority: **{{t.priority.name}}**
{% endfor %}
Outras dicas
Existem muitas maneiras de realizar o que você precisa. Um dos mais fáceis seria manter um dicionário de número para cordas. Assim: 1-> Alto, 2-> Médio, 3-> Alto.
Mantenha este dicionário fora de suas funções de visualização, para que você possa acessá -lo em qualquer uma das suas funções de visualização que precisam obter a prioridade.
Você também pode simplesmente escrever um switch que determina o que exibir no modelo.