基于同级记录的Django内联表单验证

时间:2019-04-04 06:01:44

标签: django django-models django-admin django-validation

我有Admin模型,该模型具有内联模型,例如

class ParentAdmin(admin.Model):
  inlines = (ChildInline,)


class ChildInline(admin.TabularInline):
  ..
  form = ChildInlineForm
  ..


class ChildInlineForm(forms.ModelForm):
   def clean(self):
      ....

由于我的业务逻辑,我的clean()方法逻辑没有出现。我需要将所有内联对象都作为一个集合进行验证,有些可能彼此依赖,因此在验证之前,我需要所有发布的内联对象。

例如,仅当子A在集合中时,才验证或期望子C的实例。由于形式是肮脏的,值可能在数据库中或不在数据库中。我需要在验证之前拦截所有子实例(例如,在任何实例上调用clean),并将集合传递给验证函数,例如

 class ChildInlineForm(forms.ModelForm):
       def clean(self):
         self.instance.parentobj.__dirtychildren=#desired logic
         self.instance.validate(self.instance.parentobj)

我查看了管理员模型代码,但没有找到任何合适的方法来添加此功能。不在save_formset,save_related等中。我放置的示例代码是假设的,因为实际代码对于剪切和粘贴非常复杂

0 个答案:

没有答案