0
Good afternoon!
I have a web application being made in Django, and I don’t know how to show in the template the path of all Filefields that are linked to an object.
I own two models. One for a common form and the other with a foreign key to link multiple files, being saved to the form (Request and Requestterms, respectively).
The point is that I don’t know how to show the path of ALL FILES that were saved in A SPECIFIC FORM.
For example: I will create two forms, one called José da Silva and the other Maria do Carmo.
Now I will add 2 files, one in each form, through my other class (Solicitacaodocumentos) that has a foreign key.
Let’s get to the problem. I don’t know how to filter and show in the template only the attached files, for example, José da Silva or Maria do Carmo. All I could do was list all the attachments to all the forms I have.
from django.db import models
from django.contrib.auth.models import User, Group
class Solicitacao(models.Model):
class Meta:
verbose_name_plural = 'Solicitações'
TIPO = (
('', ''),
('Internação Clínica', 'Internação Clínica'),
('Internação Cirúrgica', 'Internação Cirúrgica'),
('Internação Oncológica', 'Internação Oncológica'),
('Internação Cardiológica', 'Internação Cardiológica'),
('Internação Pediátrica', 'Internação Pediátrica'),
('Internação em UTI Pediátrica', 'Internação em UTI Pediátrica'),
('Internação em UTI Geral', 'Internação em UTI Geral'),
('Internação em UCO', 'Internação em UCO'),
('Internação em UTI Pediátrica', 'Internação em UTI Pediátrica'),
('Internação em UADC', 'Internação UADC'),
)
date = models.DateTimeField(auto_now_add=True)
nome = models.CharField(max_length=100)
atendimento = models.CharField(max_length=100)
carteira = models.CharField(max_length=100)
tipo = models.CharField(max_length=200, null=True, choices=TIPO, default=None, blank=False)
observacao = models.TextField(blank=True, null=True)
definicoes = (
('Em análise', 'Em análise'),
('Internar', 'Internar'),
('Solicitar Transferência', 'Solicitar Transferência'),
)
definicao = models.CharField(max_length=200, null=True, choices=definicoes, default=None, blank=False)
setor = models.ForeignKey(Group, on_delete=models.CASCADE, blank=True, null=True)
def __str__(self):
return str(self.nome)
def content_file_name(instance, filename):
return '/'.join([instance.solicitacao.nome, instance.solicitacao.atendimento, filename])
class SolicitacaoDocumentos(models.Model):
class Meta:
verbose_name_plural = 'Solicitações Documentos'
solicitacao = models.ForeignKey(Solicitacao, default=None, on_delete=models.SET_DEFAULT, related_name='arquivo_chave')
documentos = models.FileField(upload_to=content_file_name, blank=True, null=True)
def __str__(self):
return str(self.solicitacao.nome)
Urls.py
path('pav/<id>/', views.upload, name='upload'),
Views.py
def upload(request, id):
arquivos = SolicitacaoDocumentos.objects.all()
return render(request, 'upload.html', {
'arquivos':arquivos
})
Template:
{% for p in arquivos %}
<table>
<thead>
<tr>
<th>
{{ p.documentos }}
</th>
</tr>
</thead>
</table>
{% endfor %}