私はドキュメントでこれを見つけることができませんでしたが、可能でなければならないと思います。私はClearableFileInputウィジェットを具体的に話しています。ジャンゴ1.2.6でのプロジェクトから私はこのフォームを持っている:私は、このテンプレートコードを使用してレンダリングDjangoでウィジェットのhtml出力をカスタマイズするにはどうすればよいですか?
# the profile picture upload form
class ProfileImageUploadForm(forms.ModelForm):
"""
simple form for uploading an image. only a filefield is provided
"""
delete = forms.BooleanField(required=False,widget=forms.CheckboxInput())
def save(self):
# some stuff here to check if "delete" is checked
# and then delete the file
# 8 lines
def is_valid(self):
# some more stuff here to make the form valid
# allthough the file input field is empty
# another 8 lines
class Meta:
model = SocialUserProfile
fields = ('image',)
:
は<form action="/profile/edit/" method="post" enctype="multipart/form-data">
Delete your image:
<label> {{ upload_form.delete }} Ok, delete </label>
<button name="delete_image" type="submit" value="Save">Delete Image</button>
Or upload a new image:
{{ upload_form.image }}
<button name="upload_image" type="submit" value="Save">Start Upload</button>
{% csrf_token %}
</form>
ジャンゴ1.3.1は、デフォルトのウィジェットとしてClearableFileInputを使用したように、I 「私は私のform.saveの16行をスキップし、ちょうどそうのようなフォームコードを短縮することができますかなり確信している:私は、私はあまりカスタマイズformcodeを持っている良い感じを与えるだろう、と目に頼ることができ
# the profile picture upload form
class ProfileImageUploadForm(forms.ModelForm):
"""
simple form for uploading an image. only a filefield is provided
"""
class Meta:
model = SocialUserProfile
fields = ('image',)
e Djangoビルトイン。
もちろん、html出力を以前と同じように保つことができます。既存のテンプレートコードを使用するだけで、 "Currently:somefilename.png"のようなものは、私が望んでいない場所でポップアップします。
フォームフィールドをさらに分割すると、{{ upload_form.image.file }}
のように動作しないようです。次に気になるのは、カスタムウィジェットを書くことでした。できるだけ多くのカスタマイズされたコードを削除しようとしている私の努力とは正反対です。
このシナリオで最も簡単なことは何ですか?
短い答え:STEP 1:ウィジェットクラスSTEP 2を拡張:あなたのフィールドノート用のウィジェットを上書き:あなたが欲しいですdjangoフォームの '__init__'メソッドで、手順1で作成したサブクラス化ウィジェットを使用します。例が必要な場合は、私に知らせてください、そして、私は今日の午後にそれを打つでしょう。 –
私が考えていた最新のことは、ウィジェットで使用されているテンプレートをオーバーライドすることだけです。あなたは今日の午後にチューニングしていただければ幸いです(私はあなたとは違う大陸にいるのは明らかです、ここではすべてが16:15:Dです) – marue
うん、私は仕事を辞めて、 〜5またはそれ以上の時間 –