寻找 django 表单集验证如何工作的信息,尽管它比听起来更复杂。我有一个带有值的表单集,其中部分值可以通过 javascript 插入其中(这意味着它们在数据库中尚不存在)。
class RequireOneFormSet(BaseInlineFormSet):
def clean(self):
if any(self.errors):
return
form_count = len([f for f in self.forms if f.cleaned_data])
if form_count < 1:
raise ValidationError(_('At least one %(object)s is required.') %
{'object':
_(self.model._meta.object_name.lower())})
class VariantInline(admin.StackedInline):
model = Variant
extra = 1
formset = RequireOneFormSet
class ProductAdmin(admin.ModelAdmin):
class Meta:
model = Product
class Media:
js = (os.path.join(STATIC_URL, 'js', 'admin_utils.js'), )
exclude = ('slug',)
filter_horizontal = ('category',)
inlines = [ImageInline, DetailInline, VariantInline]
manufacturer = ModelChoiceField(Manufacturer.objects.all())
list_filter = ('name', 'manufacturer', 'category')
list_display = ('name', 'manufacturer')
search_fields = ('name',)
save_as = True
接下来,基于这些条目,我想在表单集验证期间创建对象。单击“保存”按钮时,Django 抱怨数据库中没有这样的对象。
我试图覆盖模型的清理方法、ModelAdmin 的清理、formset 的 save_formset 但没有运气,因为这些由 javascript 创建的值在进程的早期被过滤掉了。我正在寻找哪种方法可以解决此问题的信息,并且可以覆盖它吗?
编辑:添加了一些代码,使用的视图是 Django 的通用视图。