#python #django #bootstrap-4
#python #django #bootstrap-4
Вопрос:
Я надеюсь, что кто-нибудь может помочь мне с несколькими загрузками файлов. Я нашел несколько подсказок в Интернете, но с чем я борюсь, так это с отображением заголовка и файлов на одной странице. Пожалуйста, ознакомьтесь с приведенным ниже кодом, чтобы понять, чего я пытаюсь достичь: models.py
class Uradna(models.Model):
title = models.CharField(max_length=200)
date = models.DateField(default=datetime.now)
file = models.FileField(blank=True, upload_to='files/')
class Meta:
verbose_name_plural = 'Uradna'
def __str__(self):
return str(self.date)
class Files(models.Model):
tabula = models.ForeignKey(Uradna, on_delete=models.CASCADE)
title = models.CharField(max_length=200, null=True)
files = models.FileField(upload_to='files/')
class Meta:
verbose_name_plural = 'Files'
def __str__(self):
return str(self.tabula.date)
views.py:
def homePageView(request):
posts = Uradna.objects.all().order_by('-id')[:5]
context = {
'posts':posts
}
return render(request, 'home.html', context)
def filesView(request, id):
post = get_object_or_404(Uradna, id=id)
files = Files.objects.filter(tabula=post)
return render(request, 'home.html',
{'post':post, 'files':files})
urls.py
urlpatterns = [
path('', homePageView, name='home'),
path('<int:id>', filesView, name='home_files'),
]
home.html
<div class="accordion" id="accordionExample">
{% for post in posts %}
<div class="card mt-3">
<div class="card-header" id="headingOne">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse"
data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
{{ post.date }}
</button>
</h2>
</div>
<div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordionExample">
<div class="card-body">
<a href="{{post.file.url}}" target="_blank">{{ post.title }}</a>
</div>
</div>
{% endfor %}
</div>
</div>
Я попробовал другой цикл for из внешнего ключа, но он, очевидно, не работает, поскольку urls.py хочет перенаправить на страницу идентификатора. Если бы кто-нибудь мог дать мне какие-либо подсказки, я был бы очень признателен.
Комментарии:
1. что именно вы хотите сделать? у вас есть заголовок имени поля в обеих моделях.. у вас также есть
filefield
дляUradna
. отличается ли этот файл отfiles
model?2. Модель файлов — это внешний ключ для Uradna, поэтому я могу загружать больше файлов. Проблема, с которой я столкнулся, заключается в том, что я хочу, чтобы все загруженные файлы отображались под одним общим заголовком, как вы можете видеть в html. Поэтому, когда я загружаю один заголовок с 3 файлами, я хочу, чтобы он отображался на одной странице. Я понятия не имею, как этого добиться.
3. у меня есть такой старый пример загрузки нескольких файлов, вы можете прочитать это github.com/idontgotit/upload-multi-file-django-angular