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 № 1Formy 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.