Пример обработки formset

5 апреля 2016 г. 3:16

В данном примере мы имеем доступ к управляющей (главной) форме и к его инлайновым формам. Это позволяет нам проводить более сложные "совместные" проверки, например:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.forms import BaseInlineFormSet
from django.contrib import admin
from django.core.exceptions import ValidationError


class GalleryPictureInlineFormSet(BaseInlineFormSet):
    def clean(self):
        if self.management_form.data.get('is_thumbs_hidden', None) == 'on' and not any([form.cleaned_data.get('is_use_preview_window') for form in self.forms]):
            raise ValidationError('Выберите опцию либо "Отображать миниатюры галереи", '
                                  'либо "Использовать в окне предпросмотра" в конкретном изображении')


class GalleryPictureInline(admin.TabularInline):
    formset = GalleryPictureInlineFormSet
    model = GalleryPicture
    extra = 0


class Gallery(admin.ModelAdmin):
    ...
    inlines = (GalleryPictureInline, )

Оцените статью

1 из 5 (всего 1 оценка)

Поля, отмеченные звёздочкой ( * ) , являются обязательными.

Спасибо за ваш отзыв!

После нажатия кнопки "Отправить" ваше сообщение будет доставлено мне на почту.

Автор статьи

Права на использование материала, расположенного на этой странице http://vivazzi.pro/it/formset-example/:

Разрешается копировать материал с указанием её автора и ссылки на оригинал без использования параметра rel="nofollow" в теге <a>. Использование:

Автор статьи: Мальцев Артём
Ссылка на статью: <a href="http://vivazzi.pro/it/formset-example/">http://vivazzi.pro/it/formset-example/</a>

Подробнее: Правила использования сайта

Комментариев: 0

Вы можете оставить комментарий как незарегистрированный пользователь. Но, зарегистрировавшись, вы сможете получать оповещения об ответах, а также иметь доступ к своему личному аккаунту для просмотра своих комментариев.

Чтобы оставить комментарий от своего имени войдите или зарегистрируйтесь обычным способом или через социальные сети:

Отправить

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте