Хрустящие формы Django, BaseGenericInlineFormSet и allow_delete

Во время работы с django-crispy-forms я столкнулся с вопросом, на который я не могу получить ответ. У меня довольно сложный макет формы, до сих пор все работает очень хорошо с cripy-forms.

В одной части формы используется общий встроенный набор форм. Это тоже работает, но моя проблема в том, что я не могу понять, как получить доступ к флажку удаления (при наличии 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)

Поле имени и URL-адреса отображаются с четкими формами по желанию, но флажок удаления появляется в конце формы. И я не могу получить к нему доступ в макете.

Кто-нибудь знает, как решить эту проблему? Какие-нибудь советы? Заранее спасибо!


person ohrstrom    schedule 16.09.2012    source источник
comment
Для записи: вы всегда можете сделать self.helper.render_unmentioned_fields = True, и тогда все скрытые поля также будут отображаться. Затем вы можете проверить, каковы их имена, и явно включить их в макет.   -  person Tomasz Zieliński    schedule 10.04.2013


Ответы (1)


Глупый я - понял это .. Поле удаления упоминается как «УДАЛИТЬ». (обратите внимание на заглавные буквы...)

    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',
    )
person ohrstrom    schedule 16.09.2012