Django crispy-forms,BaseGenericInlineFormSet& allow_delete

时间:2012-09-16 12:10:09

标签: django django-crispy-forms form-layout

我在使用django-crispy-forms时遇到了一个问题,我无法得到答案。 我有一个相当复杂的表单布局,到目前为止,一切都非常好用cripy-forms。

表单的一部分使用通用内联formset。这也有效,但我的问题是,我无法弄清楚如何访问删除复选框(当 can_delete = True 时)

相应的代码如下所示:

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)

name和url字段根据需要使用crispy-forms呈现,但delete-checkbox显示在表单的末尾。我无法在布局中访问它。

有人知道如何解决这个问题吗?有小费吗?提前谢谢!

1 个答案:

答案 0 :(得分: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',
    )