#45. Отображение полей формы. Сохранение переданных данных в БД | Уроки по Django 4
HTML-код
- Опубликовано: 30 сен 2024
- Практический курс по Django: stepik.org/a/1...
Телеграм-канал Django: t.me/django_se...
Инфо-сайт: proproprogs.ru...
Способы отображения полей формы в HTML-шаблоне. Добавление CSS-стилей оформления для полей и HTML-атрибутов. Сохранение переданных данных в таблице БД.
45_sitewomen.zip: github.com/sel...
Классы и параметры полей формы: docs.djangopro...
У меня возник вопрос, я все сделал точно так же как и на видео, и все работает, формы заполняются, запросы улетают в БД.
Но когда выбираешь в поле "Муж" - любую запись из выпадающего списка, то форма перестает отправляться в бд, и при этом ошибки никакой не появляется.
В class AddPostForm(forms.Form) я добавила поле с тегами (которое со связью многие-ко-многим):
tags = forms.ModelMultipleChoiceField(queryset=TagPost.objects.all(), widget=forms.CheckboxSelectMultiple, label='Теги', required=False)
И данные из формы перестали добавляться в модель Posts и соответственно выводится "Ошибка добавления поста". Как только я эту строку комментирую, новая запись успешно добавляется. Как решить эту проблему?
Вопрос в ТГ-канал.
def addpage(request): # добавление данных в бд
if request.method == 'POST': # если запрос POST, сохраняем данные
form = AddPostForm(request.POST) # Объект класса формы в HTML.
if form.is_valid():
cd = form.cleaned_data # Отчищенные данные от формы в type Dic.
try:
# Объект класса модели с полями в которые будем сохранять введенные данные.
women= Women(
title=cd['title'],
content=cd['content'],
cat=cd['cat'],
status=cd['status'],
)
women.save()
# Для отношения Many to Many получаем список (list) id выбранные tags.
tag_ids = request.POST.getlist("tags")
# Получаем список (list) QuerySet выбранных tag_id.
tags = TagPost.objects.filter(id__in=tag_ids)
announcement.tags.set(tags) # сохраняем данные
return redirect('home')
except:
form.add_error(None, 'Ошибка добавления поста')
else:
form = AddPostForm()
data = {
'title': 'Опубликовать',
'menu': menu,
'form': form,
}
return render(request, 'woment/addpage.html', data)
class AddPostForm(forms.ModelForm):
cat = forms.ModelChoiceField(queryset=Category.objects.all(), required=False, label="Город", empty_label="Выберете категорию")
tags = forms.ModelMultipleChoiceField(queryset=TagPost.objects.all(), required=False, label='Оснащение', widget=forms.CheckboxSelectMultiple)
class Meta:
model = Women
fields = ['title', 'content', 'status']
Спасибо большое. Очень бы хотела видео с unittest исключений (встроенных и кастомных) . Может быть получится создать его. Благодарю заранее.
Касаемо добавления в БД. У меня срабатывает исключение. Не могу понять поему.
При этом print(form.cleaned_data) в терминал мне выводит введённые данные.
В чем может быть проблема?
Вопрос в ТГ-канал по Django
Если ещё актуально, то, возможно, вы для мужа выбирали того, кто уже занят, а поле husband уникальное.
@@-zerotwo9444 я на это напоролся,у меня не добавлялась запись и всегда срабатывало исключение))
позже просто создал новую запись в husband и создавая новую статью добавил его в качестве мужа,сработало
но не понял,где мы указывали,что husband= unique?
Как всегда - спасибо за урок, маэстро!
Но не могли бы вы показать пример оформления стилей?
7:32 может я не так понял автора, но в шаблоне единое оформление указано для лейблов, а дальше в ролике отдельно уже прописывается стиль самих полей
Спасибо, Сергей! Здоровья тебе🤝
Спасибо. Отличный материал.
Спасибо, очень вкусно!😄
Здорово! Спасибо! 🤝🙏
Спасибо!! Отличное видео!
just legend
Здравствуйте хочу у вас спросить,а вы случайно не читали книгу Антонио Меле Django в примерах? Просто замечаю очень схожий синтаксис как и у него в книге ,поэтому и интересно
Да, читал. Но не опирался на нее. А синтаксис похожий у многих )
принял,спасибо большое за ответ,правда было интересно узнать@@selfedu_rus
👍
Супер!