在内联字段Django中引发验证错误 [英] Raise validation error in inline field Django
本文介绍了在内联字段Django中引发验证错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个包含 TabularInline 的模型,并且我想在条件无效时引发验证错误.我的父母模型:
I have a model that contains a TabularInline, and I want to raise a validation error when a condition is not valid. My parent model:
@admin.register(Even)
class EventAdmin(admin.ModelAdmin):
list_display = ['id', 'title']
list_display_links = ['id', 'title]
inlines = [EventSpecialPriceInline]
还有我的TabularInline:
And my TabularInline:
class EventSpecialPriceInline(admin.TabularInline):
model = EventSpecialPrice
extra = 0
can_delete = True
我要引发的错误是当行的价格为负时 EventSpecialPrice.price<0
The error I want to raise is when a price of a row is negative EventSpecialPrice.price < 0
推荐答案
我添加了 BaseInlineFormSet
并使用了 form.clean
:
from django.core.exceptions import ValidationError
from django.forms.models import BaseInlineFormSet
class EventSpecialPriceInlineFormSet(BaseInlineFormSet):
def clean(self):
super(EventSpecialPriceInlineFormSet, self).clean()
for form in self.forms:
if form.cleaned_data and not form.cleaned_data.get('DELETE', False):
if form.cleaned_data.get('price') < 0:
raise ValidationError('Price should be positive')
在我的 TabularInline
中,我定义了 formset
:
class EventSpecialPriceInline(admin.TabularInline):
model = EventSpecialPrice
formset = EventSpecialPriceInlineFormSet
extra = 0
can_delete = True
这篇关于在内联字段Django中引发验证错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文