2012-09-16 121 views
7

我遇到一個問題,同時使用django-crispy-forms,我無法得到答案。 我有一個相當複雜的表單佈局,到目前爲止,所有的工作都非常棒。Django香脆形式,BaseGenericInlineFormSet&allow_delete

表單的一部分使用通用內聯formset。這是工作爲好,但我的問題是,我無法弄清楚如何訪問刪除,複選框(有can_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) 

名稱和url字段按照需要呈現爲酥脆形式,但刪除複選框出現在表單的結尾處。而且我無法在佈局中訪問它。

有人知道如何解決這個問題嗎?有小費嗎?提前致謝!

+2

爲了記錄:你總是可以做'self.helper.render_untioned_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', 
    )