2011-07-15 8 views
2

基本的な問題:私は私のdjangoフォームのための本当のカスタマイズされたテンプレートを作成する必要があります。それでおしまい。私はdjangoの出力に基づいてフォームをスタイルするために使用されます。今回はhtml/cssテンプレートがすでに完成しています(私が雇用される数ヶ月前)、それを変更することはできませんので、htmlコードを正確に出力するにはdjangoが必要です。Django:フォームとカスタムテンプレート

私はたくさんのthrou djangoドキュメントを読んだことがあります。私は多くを見つけましたが、私は、私がする必要があることを順序で入れ替えることはできませんでした。私は実際に行うに必要なもの

<ul> 
    <li><input type='checkbox' ...></li> 
    ... 
</ul> 

出力に正確にこのテンプレートをCustomCheckboxSelectMultipleのようなものを作成している:他のための

<ul class="list"> 
    <li class="list-item"><input class="checkbox" type="checkbox" id="..." /><label class="label" for="">...</label></li> 
... 
</ul> 

などなどCheckboxSelectMultipleでHTML出力がこれです今

、フォームウィジェットのタイプ。彼らが私に与えたその特定のレイアウトで私のフォームを作成することが私が考えることができる唯一の方法です。

私は実際にこれに固執しています、私はフォームをコーディングを開始するためにすべてtogheterを置くことができるように見えません。 これはどのように管理できますか?例があればそれは素晴らしいでしょう!そうでなければ、私は正しい方向に向いてください...悲しいことに、ドキュメントを見て、私が前に言ったように、実際に私を助けなかった

ありがとうございました!

+0

私もincludeタグを使用してhtmlを生成することができます(そしてdjangoのフォームの代わりにカスタムコードを入力します)が、htmlをdjangoフォームクラスにバインドしてすべての機能を保持する方法を理解できませんでした(エラー、ecc検証) –

答えて

2

あなたはCheckboxSelectMultipleクラスをサブクラス化のようにrenderメソッドをオーバーライドする必要があります:あなたの新しいメソッドを作成する方法のインスピレーションの元CheckboxSelectMultipleソースを参照してください

class CustomCheckboxSelectMultiple (CheckboxSelectMultiple): 
    """ 
    A custom CheckboxSelectMultiple Widget that render specific html 
    """ 
    def __init__(self, attrs={}): 
     super(CustomCheckboxSelectMultiple, self).__init__(attrs) 

    def render(self, name, value, attrs=None): 
     #Here the custom code 

。あなたのフォームでオーバーライドあなたのシグナルその後

class MyCustomForm(forms.Form): 
    formfield_overrides = { 
     models.CheckboxSelectMultiple : {'widget': CustomCheckboxSelectMultiple } 
    } 

そして今、すべてのあなたのMyCustomFormは、その中のすべてのCheckboxSelectMultipleのために特定のウィジェットを使用します。

+0

私はそれを試してみましょう、今はありがとう! –

+0

おかげさまで、checkboxselectmultipleのコードを閲覧すると、私は何をする必要があるか正確にわかりました!本当に、もう一度ありがとう! –

関連する問題