Я использую форму с can_delete = True. Я хочу изменить виджет поля УДАЛИТЬ на скрытый ввод. Я не могу найти хороший способ сделать это. Я попробовал:
Измените виджет формы на HiddenInput и / или добавьте скрытое поле в определение формы:
class MyForm(ModelForm):
DELETE = forms.BooleanField(widget=forms.HiddenInput)
class Meta:
model = MyModel
widgets = {'DELETE' : forms.HiddenInput}
Выполните вышеизложенное с изменением формы
class MyFormSet(BaseModelFormSet):
def add_fields(self, form, index):
originalDeletion = None
if DELETION_FIELD_NAME in form.fields:
originalDeletion = form.fields[DELETION_FIELD_NAME]
super(MyFormSet, self).add_fields(form,index)
if originalDeletion is not None:
form.fields[DELETION_FIELD_NAME] = originalDeletion
Если я сделаю это оба, это на самом деле изменит поле на скрытое, но это похоже на хак (эффективно перезаписывает обычный метод add_fields). Как ты должен это сделать?
== РЕДАКТИРОВАТЬ ==
Оказывается, что использование скрытого поля не очень хорошо с каркасом формы в любом случае. Вы должны обязательно использовать флажок и скрыть его с помощью CSS. Если вы хотите настроить css флажка в Django, я все же думаю, что вы должны изменить метод add_fields, как указано выше, который затем позволяет вам изменить css виджета.