J'ai deux formes à mon avis: BookingForm
et ReviewForm
. Je souhaite soumettre et traiter ces formulaires de manière indépendante dans mon template.html
. J'ai ajouté le «booking'
et 'review'
dans la balise nom de mes formes template.html
Django, gestion de plusieurs formulaires. Formulaires référencés avant affectation
Pour le formulaire de réservation, je veux simplement rediriger, mais pour le ReviewForm je voudrais créer un enregistrement dans mon DB.
Voici mon views.py
if request.method == "POST":
if 'booking' in request.POST:
form = BookingForm(request.POST)
if form.is_valid():
#process the form
return redirect()
elif 'review' in request.POST:
review_form = BookingForm(request.POST)
if review_form.is_valid():
review_form.save()
return redirect()
else:
form = BookingForm()
review_form = ReviewForm()
return render(request, "template.html", context={"form": form,"review_form":review_form})
Cependant, pour une raison quelconque, je reçois l'erreur form
et review_form
sont référencées avant l'affectation. Une autre chose, puisque le modèle de révision doit être associé à un autre modèle (appelez-le élément). Je voudrais obtenir automatiquement les données de l'article et associer ma critique à l'article lorsque j'appelle le review_form.save()
. Je pense quelque chose le long de review_form['item']=kwargs['pk']
(Je ne sais pas si cela va fonctionner). J'utilise une structure DetailView et la page a un paramètre de urls.py, associé à l'élément, stocké comme item_id=kwargs['pk']
à mon avis.
class Review(models.Model):
#other fields
item = models.ForeignKey(Item)
class ReviewForm(forms.ModelForm):
class Meta:
model = Review
fields = ('title','star','photo','name','email','body')
Merci, désolé j'ai ajouté les étiquettes de nom pour soumettre des boutons. Ai-je besoin de 2 séparés si "réservation" dans et si "examen" dans les déclarations, ou est-il possible d'avoir 1 boucle. Aussi, pourriez-vous suggérer comment gérer .save() dont j'ai parlé pour la partie suivante. Mon idée fonctionnera-t-elle? – Roma
Je semble juste que le code a beaucoup trop de déclarations si et d'autres qui est difficile à lire – Roma