/ / Sprawdzanie poprawności formularza Django, zgłaszanie błędów w zestawie pól - django, django-forms, django-validation

Sprawdzanie poprawności formularza Django, zgłaszanie błędów w zestawie pól - django, django-forms, django-validation

Wiem, jak podnieść błąd na określonym poluw moim formularzu administratora django, ale chciałbym, aby błąd został podniesiony w zestawie pól. Obecnie mam listę pól wyboru w zestawie pól i chciałbym, aby błąd został podniesiony, a nie w określonym polu (aka konkretne pole wyboru), ale w całym zestawie pól.

tutaj jest moje django admin.py

class EventAdmin(admin.ModelAdmin):
form = EventForm
fieldsets = [
(None,  {"fields": [
"approval_state",
"title",
"description"
]
}
),
("Group Owner", {"fields": [
"grpOwner_vcoe",
"grpOwner_cssi",
"grpOwner_essc",
"grpOwner_tmscc",
"grpOwner_inmc",
"grpOwner_cc7",
"grpOwner_ias",
]
}
), ...

class EventForm(forms.ModelForm):

# Form validation
def clean(self):
# Collect data
start = self.cleaned_data.get("start")
end = self.cleaned_data.get("end")

grpOwner_vcoe = self.cleaned_data.get("grpOwner_vcoe")
grpOwner_cssi = self.cleaned_data.get("grpOwner_cssi")
grpOwner_essc = self.cleaned_data.get("grpOwner_essc")
grpOwner_tmscc = self.cleaned_data.get("grpOwner_tmscc")
grpOwner_inmc = self.cleaned_data.get("grpOwner_inmc")
grpOwner_cc7 = self.cleaned_data.get("grpOwner_cc7")
grpOwner_ias = self.cleaned_data.get("grpOwner_ias")

if not (grpOwner_vcoe or grpOwner_cssi or grpOwner_essc or grpOwner_tmscc or grpOwner_inmc or grpOwner_cc7 or grpOwner_ias):
if not self._errors.has_key("Group Owner"):
self._errors["Group Owner"] = ErrorList()
self._errors["Group Owner"].append("Test")

# Check start & end data
if start > end:
if not self._errors.has_key("start"):
self._errors["start"] = ErrorList()
self._errors["start"].append("Event start must occur before event end")


return self.cleaned_data

Ale tak nie jest, wiem, że mogę to podnieść na każdym polu, ale uważam, że jest to o wiele bardziej eleganckie, gdybym mógł to zrobić w okolicy

Odpowiedzi:

0 dla odpowiedzi № 1

Formy Django nie mają koncepcji zestawów pól, należą do ModelAdmin klasa. Dlatego nie istnieje ustalony sposób przypisywania błędów do zestawu pól zamiast określonego pola.

Możesz spróbować przesłonić szablony administratora, w szczególności, includes/fieldset.html. Możesz dodać kod do swoich formularzy clean metoda, aby ułatwić dostęp do błędów zestawu pól w szablonie.