Я использую набор форм с can_delete = True. Я хочу изменить виджет поля DELETE на скрытый ввод. Кажется, я не могу найти хороший способ сделать это. То, что я попытался это:Как изменить тип виджета поля DELETE в наборе форм django
Изменение виджетов формы на HiddenInput и/или добавить скрытое поле в определении формы:
class MyForm(ModelForm):
DELETE = forms.BooleanField(widget=forms.HiddenInput)
class Meta:
model = MyModel
widgets = {'DELETE' : forms.HiddenInput}
Проделайте выше, с изменением formset
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). Как вы должны это делать?
== EDIT ==
Оказывается, что, используя скрытое поле не так хорошо со структурой формы в любом случае. Вы должны обязательно использовать флажок и скрыть его с помощью css. Если вы хотите отредактировать css флажка в Django, я все равно думаю, что вам нужно изменить метод add_fields, как указано выше, а затем вы можете изменить css виджета.
Почему ** имеет ** быть типа = скрытом? Разве другие способы скрыть это тоже хорошо? – jpic