В администраторе Django я пытаюсь проверить поле в форме (это поле доступно как поля list_display и list_editable), используя информацию в других не редактируемых списком полях.
Пока что я переопределил метод clean и выполнил проверку.Это прекрасно работает, когда я нахожусь в представлении Сведения о форме /admin/core/binddetails/48/
, но в поле отображения списка, /admin/core/binddetails/
Это не работает, потому что некоторые поля в критериях проверки недоступны как list_editable
поле
Я также изменил get_changelist_form()
, как предложено https://stackoverflow.com/a/8964559/6638281
class BindDetails(models.Model):
field1 = models.BooleanField()
field2 = models.CharField(max_length=255)
field5 = models.BooleanField()
class BindDetailsForm(forms.ModelForm):
def clean(self):
cleaned_data = super(BindDetailsForm, self).clean()
field1 = cleaned_data['field1']
field5 = cleaned_data['field5']
if field1 and not field5:
raise forms.ValidationError("'field1' cannot be enabled while 'field5' is turned off!")
class BindDetailsAdmin(admin.ModelAdmin):
model = BindDetails
form = BindDetailsForm
list_display = ('field1', 'field2')
list_editable = ('field1', 'field2')
def get_changelist_form(self, request, **kwargs):
return BindDetailsForm
Я бы хотел, чтобы, если field5
отключен, но черезна странице list_display
, я пытаюсь включить field1
, возникает ошибка проверки.