TheMaxai
@TheMaxai

Как не разрешать сохранять страницу если у нее все поля пусты?

Добрый вечер, нужно если хоть одно поле заполнено то сохранять, а иначе выдавать ошибку, как реализовать?
Поля - Текст, Аудио, Видео
from django.contrib import admin
from main_page.models import Page, Text, Audio, Video
# Register your models here.

class PageInline_Text(admin.StackedInline):
    model = Text
    extra = 0

class PageInline_Audio(admin.StackedInline):
    model = Audio
    extra = 0

class PageInline_Video(admin.StackedInline):
    model = Video
    extra = 0

class PageAdmin(admin.ModelAdmin):
    fields = []
    inlines = [PageInline_Text, PageInline_Audio, PageInline_Video]

admin.site.register(Page, PageAdmin)
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
tema_sun
@tema_sun
Как-нибудь так, не?

class PageAdminForm(forms.ModelForm):
    class Meta:
        model = Page
    def clean(self):
         if not list(filter(None, self.data.values())):
            msg = 'Не заполнено ни одно поле'
            self.add_error(None, msg)

class PageAdmin(admin.ModelAdmin):
    form = PageAdminForm
    fields = []
    inlines = [PageInline_Text, PageInline_Audio, PageInline_Video]


Хотя так оно не сработает, потому что Джанго как миниму csrf токен отправит, и что-то в values() все-таки прилетит. Но идея в целом должна сработать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@FulTupFul
На уровней модели добавьте blank=True, null=True
А в формах проверяйте чем-то типо такой конструкцией
if request.method == 'POST:
    if request.POST:
        if request.POST['something_field']:
             something_actions...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы