我是Django的初学者。我认为我的问题很简单,但我无法解决。 我有一个名为Document的模型,其中包含一个FileField:
class Document(models.Model):
file = models.FileField(upload_to="documents")
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
category = models.ForeignKey(DocumentCategory)
title = models.CharField(max_length=255, unique=True)
description = models.TextField()
def __unicode__(self):
return self.title
我想通过这个ModelForm添加这个类的新实例:
class DocumentForm(ModelForm):
class Meta:
model = Document
在views.py中我有:
def add_document(request):
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect('/')
else:
return render_to_response('add_document.html', {'form':form}, context_instance=RequestContext(request))
else:
form = DocumentForm()
return render_to_response('add_document.html', {'form':form}, context_instance=RequestContext(request))
此模板(即add_document.html):
{% extends "base.html" %}
{{block content %}
<form enctype="multipart/form-data" method="post" action="">{% csrf_token %}
{{form}}
<input type="submit" value="Add document" />
</form>
{% endblock %}
在管理界面中将模型添加到数据库正常工作,添加的文件处于“upload_to”本地化。我的表格不起作用。当我尝试提交表单时,我收到表单文件字段错误:“此字段是必填项!”如果没有模型中的FileField,那么之前就可以了 我有Django 1.2.5 我用它折磨了3天而没有任何东西!我很绝望。抱歉我的语言。请帮忙!
答案 0 :(得分:0)
现在,需要一个文件。您是否尝试在没有文件的情况下保存表单? 如果要使文件可选,则需要以这种方式定义它:
class Document(models.Model):
file = models.FileField(upload_to="documents", blank=True, null=True)
作为附加说明,表单中的操作参数可能不正确
它应该是一个URL;通常在Django中你想要放"."
,但不是一个完全空的字符串(""
)。也就是说,我不知道这可能是一个问题。
答案 1 :(得分:0)
在您的文档模型中,您将文件设置为upload_t0“documents”,但指向upload_to的确切位置。