У меня есть модель администратора, которая имеет встроенную модель, например,
class ParentAdmin(admin.Model):
inlines = (ChildInline,)
class ChildInline(admin.TabularInline):
..
form = ChildInlineForm
..
class ChildInlineForm(forms.ModelForm):
def clean(self):
....
Моя логика метода clean () не работает из-за моей бизнес-логики. Мне нужно проверить все встроенные объекты как набор, и некоторые из них могут зависеть друг от друга, поэтому перед проверкой мне нужны все размещенные встроенные объекты.
E.g. Экземпляр дочернего элемента 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 и т. Д. Пример кода, который я привел, является гипотетическим, поскольку фактический код очень сложен для вырезания и прохождения