Поднять ошибку проверки во встроенном поле Django - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть модель, которая содержит TabularInline , и я хочу вызвать ошибку проверки, когда условие недопустимо.Моя родительская модель:

@admin.register(Even)
class EventAdmin(admin.ModelAdmin):
    list_display = ['id', 'title']
    list_display_links = ['id', 'title]
    inlines = [EventSpecialPriceInline]

И мой TabularInline:

class EventSpecialPriceInline(admin.TabularInline):
    model = EventSpecialPrice
    extra = 0
    can_delete = True

Ошибка, которую я хочу поднять, - это когда цена строки отрицательна EventSpecialPrice.price < 0

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Я добавил 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
0 голосов
/ 29 ноября 2018

Вы можете использовать MinValueValidator для поля вашей модели

class EventSpecialPrice(models.Model)
    price = models.FloatField(validators=[MinValueValidator(0)])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...