我有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等中。我放置的示例代码是假设的,因为实际代码对于剪切和粘贴非常复杂