Tôi đang sử dụng một bộ định dạng với can_delete = True. Tôi muốn thay đổi tiện ích của trường DELETE thành đầu vào bị ẩn. Tôi dường như không thể tìm ra cách tốt để làm điều này. Những gì tôi đã cố gắng là:Làm cách nào để thay đổi loại tiện ích con của trường DELETE trong một tập hợp django
Thay đổi phụ tùng của hình thức để HiddenInput và/hoặc thêm một lĩnh vực tiềm ẩn trong định nghĩa hình thức:
class MyForm(ModelForm):
DELETE = forms.BooleanField(widget=forms.HiddenInput)
class Meta:
model = MyModel
widgets = {'DELETE' : forms.HiddenInput}
Làm ở trên với một sự thay đổi trong 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
Nếu tôi thực hiện cả hai, nó thực sự thay đổi trường để ẩn nhưng điều này có vẻ như một chút của một hack (có hiệu quả ghi đè lên phương pháp add_fields thông thường). Làm thế nào bạn có nghĩa vụ phải làm điều này?
== EDIT ==
Hóa ra, việc sử dụng trường ẩn không tốt với khung biểu mẫu. Bạn chắc chắn nên sử dụng một hộp kiểm và ẩn nó với css. Nếu bạn muốn làm điều chỉnh css của hộp kiểm trong Django tôi vẫn nghĩ rằng bạn phải thay đổi phương thức add_fields như trên, mà sau đó cho phép bạn thay đổi css của widget.
Tại sao nó ** đã ** là có type = ẩn? Không phải là những cách khác để che giấu nó tốt sao? – jpic