Django模型形式不产生预期的HTML

时间:2010-12-02 21:35:26

标签: python django file forms upload

我有一个不会产生(某些)HTML(应该)代表模型字段的模型。正如您从底部的输出中看到的那样,它只是输出一个空白行,它应该输出标题,并且可能是文件字段的浏览按钮(或其他东西?)。

#views.py
def upload_file(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
    else:
        form = UploadFileForm()
    return render_to_response('files/upload_file.html', { 'form': form })

#models.py
from django import forms
from django.db import models
from django.forms import ModelForm

class UploadFile(models.Model):
    title = forms.CharField(max_length = 50)
    theFile = forms.FileField()

    def __unicode__(self):
        return str(title)

class UploadFileForm(ModelForm):
    class Meta:
        model = UploadFile

#upload_file.html
<form action="" method="POST" enctype="multipart/form-data">
    {{ form }}
    <input type="submit" value="Upload File">
</form>

#The HTML output
<form action="" method="POST" enctype="multipart/form-data">

    <input type="submit" value="Upload File">
</form>

1 个答案:

答案 0 :(得分:5)

实际上第二个想到你的错误在于宣告你的模型UploadFile(由于缺乏响应而在重复检查之后)。你应该使用models.CharField而不是forms.CharField。因此,您的模型没有任何内容;因此,ModelForm没有任何字段(如果某些高级用户想要将您最终想要使用的表单字段附加到模型,则不会出现错误)。您还需要为FileField提供upload_to位置,主要是您的媒体目录。

class UploadFile(models.Model):
    title = models.CharField(max_length = 50)
    theFile = models.FileField(upload_to="files/")

    def __unicode__(self):
        return str(title)