Я использую следующий код, чтобы объединить все поля формы формы в наборе форм вместе в div с хрустящими формами django:
class OperatorForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(OperatorForm, self).__init__(*args, **kwargs):
self.helper = FormHelper(self)
self.helper.form_tag = False
self.helper.all().wrap_together(Div, css_class="operator-form")
self.helper.render_unmentioned_fields = True
class Meta:
model = Operator
fields = tuple(fields_list)
Создание экземпляра FormHelper с 'self' автоматически генерирует макет без необходимости указывать все поля. Мне это нужно, потому что мои поля генерируются динамически. Проблема в том, что в макет не добавляются поля DELETE и ORDER. Поэтому я установил для render_un упомянутых_полей значение True. С этой настройкой эти два поля, по крайней мере, отображаются в форме, но не обертываются остальными полями в div.
Я знаю, что могу вручную перебирать формы в наборе форм и обертывать их с помощью div, что я и делал до сих пор, но это требует ручной обработки неформальных ошибок набора форм, что обычно делается автоматически по хрустящему.
EDIT: код обновлен в соответствии с запросом. Весь этот класс на самом деле обернут фабричным методом, который заполняет fields_list, так что я могу динамически включать только определенные поля. ORDER и DELETE опущены намеренно. Они автоматически обнаруживаются (включение их приводит к ошибке) и отображаются в форме, просто они не завернуты в div.
self.helper.render_unmentioned_fields = True
над предыдущей строкой и посмотрите, что получится. - person Brian Dant   schedule 02.07.2013self
вFormHelper
. В основном разделе документации они создают экземплярFormHelper
без передачиself
и получают весь макет. Вы должны колебаться, предполагая, что Crispy не хватает какой-либо функции, или это ошибка, поскольку это одна из проблем, которую он призван решить. Вы изучали обновление макетов на ходу в Ваше мнение? - person Brian Dant   schedule 02.07.2013self
вFormHelper
. Вы заметите в документах (ваша первая ссылка), что они создают макет вручную, когда они создают экземпляр безself
. Мне придется попробовать обновить на ходу, спасибо за предложение, но если вам не разрешено добавлять DELETE и ORDER вручную, я не думаю, что делать это на ходу будет чем-то другим. Если, конечно, вы не можете добавить их, когда не создаете экземпляр с собой. В любом случае, я бы подумал, что то, что работает безself
, должно работать и сself
. - person Daniel Palm   schedule 02.07.2013