我为可下载文件建立了模型。我可以通过管理员创建它们。但是,当我尝试加载我的上传表单时,没有任何字段出现。我相信这正是我渲染所有其他表单的方式。
template.html
{% load crispy_forms_tags %}
<form enctype="multipart/form-data" method="POST">
{% csrf_token %}
{{form|crispy}}
{{form.errors}}
<button type="submit" class="btn submit-btn mt-3 mr-2"><i class="fa fa-share"></i> Submit</button>
</form>
forms.py
from django import forms
from .models import DownloadableFile
class DownloadableFileForm(forms.ModelForm):
class Meta:
model = DownloadableFile
fields = '__all__'
models.py
from django.db import models
# Create your models here.
class DownloadableFile(models.Model):
CHOICES = (
('MARKETING MATERIAL - (FORMS)', 'MARKETING MATERIAL - (FORMS)'),
('MARKETING MATERIAL - (LOGOS & IMAGES)', 'MARKETING MATERIAL - (LOGOS & IMAGES)'),
('OTHER DOCUMENTS & FORMS', 'OTHER DOCUMENTS & FORMS'),
)
title = models.CharField(max_length=255)
file_type = models.CharField(max_length=255, choices=CHOICES)
description = models.TextField(blank=True, null=True)
upload_date = models.DateTimeField(auto_now_add=True)
file = models.FileField(upload_to='downloads/')
class Meta:
verbose_name_plural = "Downloadable Files"
def __str__(self):
return self.title
views.py
@login_required
def create_downloadable_file_view(request):
if request.method == 'POST':
form = DownloadableFileForm(request.POST, request.FILES)
if form.is_valid():
form = form.save()
return redirect('main:homepage_view')
else:
form = DownloadableFileForm
context = {
'files': DownloadableFile.objects.all(),
}
return render(request=request, template_name="dashboard/create-file.html", context=context)
def delete_downloadable_file_view(request, pk):
obj = get_object_or_404(DownloadableFile, pk=pk)
if request.method == 'POST':
obj.delete()
return redirect('dashboard:dashboard_view')