2010-12-02 17 views
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> 

答えて

5

実際には、あなたの間違いはあなたのモデルUploadFile(応答の不足のためにダブルチェックした後)を宣言することにあります。あなたはmodels.CharFieldではなく、models.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) 
+0

Hmmm参照してください。私は何も問題なくforms.fooではなくmodels.fooを使って似たようなことを書いていたので、それは(私のもの)私に起こりました。しかし、Djangoのドキュメンテーションでは、特にファイルアップロードを扱う際にforms.fooが特に使用されています。面白い。ありがとうございました! – Harv

+0

@ 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フォームを作ることと関連しています。 –

+0

はい、それはまさに私が言及していた文書です。私はちょうどあなたがどこかにデータを格納する意図でフォームを構築すると仮定したと仮定し、ドキュメントはそうでないと思わないようです。フォームを持たないモデルについてあなたが何を言っているのか理解しています。ご協力いただきありがとうございます! – Harv

関連する問題