2012-09-16 4 views
7

私が答えを得ることができないdjango-crispy-formsで作業しているときに、私は質問を見つけました。 私はかなり複雑なフォームレイアウトを持っています。Django crispy-forms、BaseGenericInlineFormSet&allow_delete

フォームの一部は、汎用のインラインフォームセットを使用します。

class BaseReleaseReleationFormSet(BaseGenericInlineFormSet): 

    def __init__(self, *args, **kwargs): 

     self.instance = kwargs['instance'] 
     super(BaseReleaseReleationFormSet, self).__init__(*args, **kwargs) 

     self.helper = FormHelper() 
     self.helper.form_id = "id_relation_form" 
     self.helper.form_class = 'form-horizontal' 
     self.helper.form_method = 'post' 
     self.helper.form_action = '' 
     self.helper.form_tag = False 

     base_layout = Row(
       Column(
         Field('name', css_class='input-small'), 
         #Field('delete', css_class='input-small'), 
         css_class='span3' 
         ), 
       Column(
         Field('url', css_class='input-xlarge'), 
         css_class='span4' 
         ), 
       css_class='row relation-row', 
     ) 

     self.helper.add_layout(base_layout) 

:対応するコードは次のようになります

これは、うまく機能しているが、私の問題は、私は(can_delete = Trueのを持つ場合)、削除、チェックボックスにアクセスする方法を見つけ出すことができないこと、です名前とURLフィールドは必要に応じてクリスピーフォームで表示されますが、フォームの最後に削除チェックボックスが表示されます。レイアウトではアクセスできません。

誰かがこの問題に対処する方法を知っていますか?任意のヒント?前もって感謝します!

+2

記録のために:あなたはいつも 'self.helper.render_unmentioned_fields = True'を実行することができ、そしてすべての"隠された "フィールドもレンダリングされます。次に、名前が何であるかを確認してレイアウトに明示的に含めることができます。 –

答えて

8

愚かな私はそれを考え出しました..削除フィールドは "DELETE"として参照されています。 (大文字に注意してください)

base_layout = Row(
      Column(
        Field('name', css_class='input-small'), 
        css_class='span3' 
        ), 
      Column(
        Field('url', css_class='input-xlarge'), 
        Field('DELETE', css_class='input-small'), 
        css_class='span4' 
        ), 
      css_class='row relation-row', 
    ) 
関連する問題