1
モデルフィールドを表すHTMLを生成しないmodelformがあります。下の出力から見ることができるように、タイトルを出力する必要がある空白行と、おそらくファイルフィールドの参照ボタン(または何か)を出力しているだけです。Djangoモデルフォームが期待された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>
Hmmm参照してください。私は何も問題なくforms.fooではなくmodels.fooを使って似たようなことを書いていたので、それは(私のもの)私に起こりました。しかし、Djangoのドキュメンテーションでは、特にファイルアップロードを扱う際にforms.fooが特に使用されています。面白い。ありがとうございました! – Harv
@ Harv:ドキュメントでは、モデルでFileUploadの良い例を見つけることができません。 http://docs.djangoproject.com/en/dev/topics/http/file-uploads/にあるとします。フォームを使用してフォーム内のフィールドを正しく定義するフォーム(つまり、HTMLフォームを生成するクラス)を使用した例を示しています。モデルはない.Char/FileField。 Model(dbに格納する情報のクラス)を作成し、ModelFormでフォームを作成します(フォームからフォームを生成する* Field out from the model)。モデルは決してフォームを持つべきではありません。*その中のフィールドは、dbに情報を保存するのではなくHTMLフォームを作ることと関連しています。 –
はい、それはまさに私が言及していた文書です。私はちょうどあなたがどこかにデータを格納する意図でフォームを構築すると仮定したと仮定し、ドキュメントはそうでないと思わないようです。フォームを持たないモデルについてあなたが何を言っているのか理解しています。ご協力いただきありがとうございます! – Harv