Django模型表单未产生预期的HTML

1 投票
1 回答
543 浏览
提问于 2025-04-16 07:57

我有一个模型表单,但它没有生成(一些)应该显示模型字段的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 个回答

5

其实再想想,你的错误在于你声明的模型是 UploadFile(因为没有回复我又仔细检查了一下)。你应该使用 models.CharField,而不是 forms.CharField。这样一来,你的模型就没有任何内容了;所以 ModelForm 也没有任何字段(这并没有报错,只是为了方便一些高级用户可以把他们最终想用的表单字段连接到模型上)。另外,你还需要给 FileField 指定一个上传位置,主要是你的媒体目录。

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

    def __unicode__(self):
        return str(title)

撰写回答