#django #django-models #django-admin #django-validation
#django #django-модели #django-администратор #django-проверка
Вопрос:
У меня есть модель администратора, которая имеет встроенную модель со своей формой, например
class ParentAdmin(admin.Model):
inlines = (ChildInline,)
class ChildInline(admin.TabularInline):
..
form = ChildInlineForm
..
class ChildInlineForm(forms.ModelForm):
def clean(self):
....
Моя логика метода clean () не подходит из-за моей бизнес-логики. Мне нужно проверить все встроенные объекты как набор, и некоторые могут зависеть друг от друга, поэтому мне нужны все размещенные встроенные объекты перед проверкой.
Например, экземпляр дочернего элемента C проверяется или ожидается только тогда, когда дочерний элемент A находится в наборе. Поскольку форма загрязнена, а значение может быть в БД или нет. Мне нужно перехватить все дочерние экземпляры перед проверкой (например, clean вызывается для любого экземпляра) и передать набор в функцию проверки, например
class ChildInlineForm(forms.ModelForm):
def clean(self):
self.instance.parentobj.__dirtychildren=#desired logic
self.instance.validate(self.instance.parentobj)
Я посмотрел на код модели администратора, я не вижу подходящего способа добавить эту функциональность. Не в save_formset , save_related и т.д. Приведенный мною пример кода является гипотетическим, поскольку фактический код очень сложен для вырезания