Проверка встроенной формы в Django на основе записей одного и того же брака - PullRequest
2 голосов
/ 04 апреля 2019

У меня есть модель администратора, которая имеет встроенную модель, например,

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...