Не проверять форму если нажали кнопку
Всем привет!
Имеем:
forms.py
class PostForm(forms.ModelForm): condition = forms.ChoiceField(widget=forms.RadioSelect, choices=CONDITION_CHOICES, label='Состояние', required=True) category = forms.ModelChoiceField(widget=forms.Select(attrs={'size':'10'}), queryset=Category.objects.all(), empty_label=None, label='Категория', required=True) subcategory1 = forms.ModelChoiceField(queryset=Subcategory1.objects.all(), required=True) subcategory2 = forms.ModelChoiceField(queryset=Subcategory2.objects.all(), required=True) class Meta: model = Advert fields = ('condition', 'title', 'description', 'category', 'subcategory1', 'subcategory2')
views.py
class PostCreateView(UpdateView): model = Post form_class = PostForm template_name = 'add.html' def get(self, request, *args, **kwargs): self.object = self.get_object() form_class = self.get_form_class() form = self.get_form(form_class) return self.render_to_response(self.get_context_data(form=form)) def post(self, request, *args, **kwargs): self.object = self.get_object() form = self.get_form() #если нажимается кнопка draft if request.POST['submit']=='draft': form.instance.is_draft = 'True' self.object = form.save() return super().form_valid(form) else: pass return super().post(request, *args, **kwargs) def form_valid(self, form): form.instance.user = self.request.user self.object = form.save() return super().form_valid(form) def get_success_url(self): return reverse('index')
и шаблон с 2 кнопками
<button value="draft" type="submit" name="submit" class="button">Сохранить как черновик</button> <button value="add" type="submit" name="submit" class="button">Добавить пост</button>
Как разобраться с проверками формы и сделать такое?:
если нажата кнопка draft -> не проверяем форму и просто сохраняем
если нажата кнопка add -> проверяем форму и сохраняем только после полного заполнения
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.Вам це подобається? Поділіться в соціальних мережах!
d
- dsfs
- 26 квітня 2024 р. 14:56
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80бали,
- Рейтинг балів4
d
- dsfs
- 26 квітня 2024 р. 14:35
C++ - Тест 001. Первая программа и типы данных
- Результат:73бали,
- Рейтинг балів1
Останні коментарі
Qt Linux - Урок 001. Автозапуск програми Qt під Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Qt WinAPI - Урок 007. Робота з ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Анатолий Кононенко05 лютого 2024 р. 12:50
EVA25 грудня 2023 р. 21:30
Boost - статичне зв'язування в проекті CMake під Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
Qt/C++ - Урок 056. Підключення бібліотеки Boost в Qt для компіляторів MinGW і MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
Тепер обговоріть на форумі
DA
Unlock Your Aesthetic Potential: Explore MSC in Facial Aesthetics and Cosmetology in India Embark on a transformative journey with an msc in facial aesthetics and cosmetology in india . Delve into the intricate world of beauty and rejuvenation, guided by expert faculty and …
Dr Gangil Academics20 квітня 2024 р. 17:45
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Евгений, добрый день! Такой вопрос. Верно ли следующее утверждение: Любое Android-приложение, написанное на Java/Kotlin чисто теоретически (пусть и с большими трудностями) можно написать и на C+…
Павел Дорофеев14 квітня 2024 р. 12:35
Вернуть старое поведение QComboBox, не менять индекс при resetModel Добрый день! У нас много проектов в которых используется QComboBox, в версии 5.5.1, когда модель испускает сигнал resetModel, currentIndex не менялся. В версии 5.15 при resetModel происходит try…
можно указать все поля, как required=False, а в методе clean сделать:
что то не выходит((
попробовал вот так:
При клике на кнопку add выдает Title не заполнен , а если нажать на draft кнопку = The Post could not be changed because the data didn't validate. и подсвечивает строку во вьюшке (self.object = form.save())
А пример дополнительной проверки можно?)) может я что то не то там пишу...
попробовал еще вот так:
Ничего не происходит, но если убрать (if 'add' in self.data:) получается как и выше... при клике на add выдает !Обязательное поле - как и надо , а если нажать на draft кнопку = The Post could not be changed because the data didn't validate. и бросает на ошибку во вьюшке
Возможно, если загуглить ошибку "could not be changed because the data didn't validate", можно было бы найти страницу, которая говорит, что надо вызвать метод "is_valid()" у формы? у вас же валидация происходит после вызова "save()"
Я бы посоветовал вам почитать документацию по формам Django - там есть ответы на большинство вопросов
ну и пока рано использовать UpdateView - если у вас не стандартная логика работы, Generic представления скрывают множество нюансов своей работы. использование сущностей более высокого уровня абстракции без понимания того, что происходит на нижних уровнях черевато "непонятными ошибками"
А если не UpdateView, то что посоветуете?
я бы посоветовал начать с функцией, потом классы (просто View), а потом, когда возникнет понимание, какие участки кода повторяются, можно переходить к Generic View.
generic view по сути просто View, в котором уже реализован тот код, который приходится писать каждый раз.
Спасибо