Django forme.enregistrer étape par étape
Disons que j'ai un formulaire d'ajout/modification des produits (dans le champ "utilisateur" ou " être une clé étrangère à mon Utilisateur) déclenchée à partir de deux fonctions d'affichage - ajouter/modifier :
def product_add(request):
userprofile = UserProfile.objects.get(user=request.user)
if request.method == 'POST':
form = ProductAddForm(request.POST, request.FILES,)
if form.is_valid():
form.save(user=request.user)
else:
form = ProductAddForm()
return render_to_response('products/product_add.html', {
'form':form, 'user':request.user,
}, context_instance=RequestContext(request))
def product_edit(request, id):
product = get_object_or_404(Product, id=id, user=request.user)
if product.user.id!=request.user.id:
raise Http404
if request.method == 'POST':
form = ProductAddForm(request.POST, request.FILES, instance=product)
if form.is_valid():
form.save(user=request.user)
else:
form = ProductAddForm(instance=product)
return render_to_response('products/product_edit.html', {
'form':form, 'user':request.user,
}, context_instance=RequestContext(request))
Le formulaire d'enregistrement de la méthode se présente comme suit :
def save(self, user, *args, **kwargs):
self.instance.user = user
post = super(ProductAddForm, self).save(*args, **kwargs)
post.save()
Quelqu'un peut-il me dire ce qui se passe dans cette méthode d'enregistrement étape par étape ?Pourquoi appelons-nous super sur ce formulaire et quelle est la différence dans l'ensemble du traitement lorsque nous modifier et enregistrer un nouveau produit si la fonction d'appel est le même ?
Avez-vous regardé docs.python.org pour voir ce que le
Qu'entendez-vous par "montage"? Voulez-vous dire par "validation"? Une autre caractéristique d'un Formulaire. Ou voulez-vous dire quelque chose d'autre?
Par "2 vues" voulez-vous dire "deux fonctions d'affichage"? Si oui, veuillez mettre à JOUR votre question avec toutes ces informations. S'il vous plaît ARRÊTER l'ajout de commentaires. Veuillez mettre à JOUR la question de contenir TOUS les faits. Ensuite, supprimez les commentaires.
super
fonction? docs.python.org/library/functions.html#super Qu'avez-vous appris?Qu'entendez-vous par "montage"? Voulez-vous dire par "validation"? Une autre caractéristique d'un Formulaire. Ou voulez-vous dire quelque chose d'autre?
Par "2 vues" voulez-vous dire "deux fonctions d'affichage"? Si oui, veuillez mettre à JOUR votre question avec toutes ces informations. S'il vous plaît ARRÊTER l'ajout de commentaires. Veuillez mettre à JOUR la question de contenir TOUS les faits. Ensuite, supprimez les commentaires.
OriginalL'auteur crivateos | 2010-07-01
Vous devez vous connecter pour publier un commentaire.
Enregistrer l'utilisateur argument en soi.instance de l'objet attribut de l'utilisateur
Invoquer la superclasse enregistrer méthode pour obtenir un objet résultant.
D'enregistrer le résultat dans un objet. Cela peut être inutile, ou il peut être essentiel, selon les arguments de
save
.Voir http://docs.djangoproject.com/en/1.2/topics/forms/modelforms/#the-save-method. Si la validation est Faux, alors le
post
objet n'a pas été enregistré dans la base de données.OriginalL'auteur S.Lott