Voskresenskyi
@Voskresenskyi
Начинающий джанговод!

Почему после сохранения формы обратной связи Django при след. входе на юрл срабатывает метод Get?

Суть проблемы такова:
- есть форма обратной связи (лайт)
- форма работает!!
-НО, после сохранения в БД инфы с формы обратной связи на юрл, где должна открыться пустая форма выводятся все обращения к форме + пустая форма!!!
ВОПРОС:
-почему так? Как сделать чтобы метод Get брал только пустую форму обратной связи а не все записи с БД?

models.py
class Feedback(models.Model):
	your_name = models.CharField(max_length=25)
	contact_phone = models.CharField(max_length=25)
	email = models.EmailField()
	
	def __str__ (self):
		return self.your_name


forms.py
class FeedbackForm(forms.Form):
	
	class Meta:
		model = Feedback
		fields = ("your_name", 
			"contact_phone", 
			"email"
		)


views.py

def feedback(request):
	FeedbackForm = modelformset_factory(Feedback, fields=("your_name", "contact_phone", "email"))
	
	if request.method == "POST":
		form = FeedbackForm(request.POST)
		if form.is_valid:
			form.save()
			return render(request, "index.html") 
	else:
		form = FeedbackForm()
	return render (request, "feedback.html", {"form":form})


feedback.html

<form action="" method="POST">{% csrf_token %}
    {{form.as_p}}


    
    <input type="submit" value="Submit" />
</form>


вот что выводит:
0de2b8e4edd347559e4eb22750f1f9bb.PNG
  • Вопрос задан
  • 395 просмотров
Пригласить эксперта
Ответы на вопрос 2
@kazmiruk
Почитайте внимательно в документации что делает modelformset_factory (djbook.ru/rel1.6/topics/forms/formsets.html#formsets) Здесь он явно не нужен. Просто импортируете Вашу форму во вьюхе и используете ее.
Ответ написан
Voskresenskyi
@Voskresenskyi Автор вопроса
Начинающий джанговод!
Ссори... Натупил...
Ответ - чтобы на мои грабли не наступали:
изначально загружался с from django import forms
и использовал class FeedbackForm(forms.Form):
ну а нужно было:
from django.forms import ModelForm
class FeedbackForm(ModelForm):
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы