gpt4 book ai didi

python - 如何通过 ModelForm 使用 FileField 添加 Django 模型的新实例?

转载 作者:太空宇宙 更新时间:2023-11-03 12:10:05 26 4
gpt4 key购买 nike

我是 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 错误:“This field is required!” 在没有 FileField 的模型中,这以前有效。我有 Django 1.2.5我用它折磨了 3 天,什么也没有!我很绝望。对不起我的语言。请帮忙!

最佳答案

现在,需要一个文件。您是否尝试在没有文件的情况下保存表单?
如果你想让这个文件成为可选的,你需要这样定义它:

class Document(models.Model):
file = models.FileField(upload_to="documents", blank=True, null=True)

作为附加说明,您在表单中的操作参数可能不正确。
它应该是一个 URL;通常在 Django 中你会想要放置 ".",但不是一个完全空的字符串 ("")。也就是说,我不知道这是否是个问题。

关于python - 如何通过 ModelForm 使用 FileField 添加 Django 模型的新实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5362587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com