上传带有文字说明的文件
Upload file with a text description
我无法上传和保存以文本值作为描述的文件。我不明白为什么:表单和模型显然有相关字段。当我从我的视图中删除对文本字段 tekst
的引用时,它会正确上传和保存文件。仅供参考:我正在使用基于模型字段之一的子目录结构,这就是为什么我的模型中有 def get_upload_to
而我认为 Overig_Beeld.objects.create
而不仅仅是 upload.save()
.
型号:
def get_upload_to(instance, filename):
return 'bulkafbeeldingen/%s/%s' % (instance.bulknummer, filename)
class Overig_Beeld(models.Model):
file = models.FileField(upload_to=get_upload_to)
bestandnaam = models.CharField(max_length=256, null=True)
upload_date = models.DateTimeField(auto_now_add=True)
bulknummer = models.ForeignKey(Bulk, null=True)
tekst = models.CharField(max_length=512)
表格:
class Overig_BeeldForm(forms.ModelForm):
file = forms.FileField()
tekst = forms.CharField(required=False)
class Meta:
model = Overig_Beeld
fields = ('file', 'tekst')
模板:
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
<label for="file">Bestand:</label>
<input type="file" name="file"/>
<input type="text" name="tekst"/>
<input type="submit" value="Upload" />
</form>
查看:
if request.method=="POST":
upload = Overig_BeeldForm(request.POST, request.FILES)
if upload.is_valid():
f = request.FILES['file']
Overig_Beeld.objects.create(file=f, bestandnaam=f.name, bulknummer=bulk, tekst=upload.tekst )
return redirect(reverse('bulk', args=(bulk.slug,)))
错误:
'Overig_BeeldForm' object has no attribute 'tekst'
上传的数据包含在 Django 表单实例的 cleaned_data
属性中。所以
text = upload.cleaned_data['tekst']
将解决您的问题
我无法上传和保存以文本值作为描述的文件。我不明白为什么:表单和模型显然有相关字段。当我从我的视图中删除对文本字段 tekst
的引用时,它会正确上传和保存文件。仅供参考:我正在使用基于模型字段之一的子目录结构,这就是为什么我的模型中有 def get_upload_to
而我认为 Overig_Beeld.objects.create
而不仅仅是 upload.save()
.
型号:
def get_upload_to(instance, filename):
return 'bulkafbeeldingen/%s/%s' % (instance.bulknummer, filename)
class Overig_Beeld(models.Model):
file = models.FileField(upload_to=get_upload_to)
bestandnaam = models.CharField(max_length=256, null=True)
upload_date = models.DateTimeField(auto_now_add=True)
bulknummer = models.ForeignKey(Bulk, null=True)
tekst = models.CharField(max_length=512)
表格:
class Overig_BeeldForm(forms.ModelForm):
file = forms.FileField()
tekst = forms.CharField(required=False)
class Meta:
model = Overig_Beeld
fields = ('file', 'tekst')
模板:
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
<label for="file">Bestand:</label>
<input type="file" name="file"/>
<input type="text" name="tekst"/>
<input type="submit" value="Upload" />
</form>
查看:
if request.method=="POST":
upload = Overig_BeeldForm(request.POST, request.FILES)
if upload.is_valid():
f = request.FILES['file']
Overig_Beeld.objects.create(file=f, bestandnaam=f.name, bulknummer=bulk, tekst=upload.tekst )
return redirect(reverse('bulk', args=(bulk.slug,)))
错误:
'Overig_BeeldForm' object has no attribute 'tekst'
上传的数据包含在 Django 表单实例的 cleaned_data
属性中。所以
text = upload.cleaned_data['tekst']
将解决您的问题