Проверка встроенной формы Django на основе родственных записей

#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 и т.д. Приведенный мною пример кода является гипотетическим, поскольку фактический код очень сложен для вырезания