在内联字段Django中引发验证错误 [英] Raise validation error in inline field Django

查看:61
本文介绍了在内联字段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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆