Django : l'enregistrement du formulaire dans la base de données
J'ai donc le modèle suivant :
class Recipe(models.Model):
title = models.CharField(max_length=100)
ingredients = models.TextField(max_length=200,help_text="Put the ingredients required for the recepies here !")
instructions = models.TextField(max_length=500)
posted_on = models.DateTimeField('Posted On')
def __unicode__(self):
return self.title
Maintenant ce que je veux faire, c'est que j'ai un front-end html appelé add.html qui a une forme comme:
<!DOCTYPE html>
<head><title>New Recipe</title></head>
<body>
<h1>Add A new Recipe Here</h1>
<form action="/recipes/add/" method="post">
{% csrf_token %}
<label>ID<label>
<input type="number" name="id"></input><br />
<label>Title </label>
<input type ="text" name="title"><br />
<label>Ingredients</label>
<input type="text" name="ingredients" />
<br />
<label>Instructions </label>
<input type="text" name="instructions" />
...
Ici est de savoir comment je suis de sauvegarder le formulaire à l'aide de ModelForm
:
def add(request):
if request.method == 'POST':
form = RecipeForm(request.POST)
if form.is_valid():
form.save()
#redirect
return HttpResponse("Thank you")
else:
return HttpResponse("Form Not Valid")
else:
form = RecipeForm()
context = Context({'form':form,})
context.update(csrf(request))
template = loader.get_template('myApp/add.html')
return HttpResponse(template.render(context))
Lorsque je l'exécute j'ai toujours "form Invalid"
Alors maintenant, mon problème est de savoir si le formulaire html add.html ont exactement les mappages de mon modèle de Recette ?
Si oui ,alors
- Comment puis-je ajouter le correspondant
types
dans le formulaire html (pourposted_on
) ? - Comment gérer le
id
créé implicitement parsyncdb
? - Est-il une alternative ?
J'ai juste commencé à apprendre Django
OriginalL'auteur Deepankar Bajpeyi | 2013-02-01
Vous devez vous connecter pour publier un commentaire.
1) Changement
posted_on
pour ajouter automatiquement la date de publication.2) Django va gérer le pk de l'id de la création pour vous.
3) Pourquoi ne pas utiliser un
ModelForm
pour cela? La Documentation.Vous pouvez soit utiliser
exclude
ouinclude
surfields
pour vous assurer que votre formulaire contient uniquement les champs deRecipe
que vous souhaitez inclure dans votre formulaire.OriginalL'auteur Nick Bewley
models.py
page.html
views.py
page.html
Il est possible qu'un utilisateur peut saisir les champs . 🙁ouais, c'est ce que j'ai fait. Mon point de vue peut enregistrer les données dans votre base de données. J'utilise votre RecipeForm() et mon page.html a une forme qui permet l'entrée de données, puis de présenter
Vous obtenez toujours un formulaire non valide, car il n'y a aucune données soumises. Le formulaire vous construire une autre forme, ce n'est pas votre ModelForm. Juste essayer et vous apprendrez.
vos données sont enregistrées dans la base de données lorsque
form.save()
est appelé. Cathy n'a pas de raison à ce sujet.OriginalL'auteur catherine