Lassen Sie uns sagen, ich habe ein Formular zum Hinzufügen/Bearbeiten von Produkten (mit dem Feld ‚Benutzer‘ einen Fremdschlüssel zu meinem Benutzer ist) ausgelöst aus zwei separaten Ansichtsfunktionen - add/edit:Django form.save Schritt für Schritt
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))
wie folgt
die sieht save-Methode des Formulars:
def save(self, user, *args, **kwargs):
self.instance.user = user
post = super(ProductAddForm, self).save(*args, **kwargs)
post.save()
Kann mir jemand sagen, was für Schritt in diesem speichern Verfahrensschritt passiert Warum Super nennen wir auf diesem Formular und was ist der Unterschied in der gesamten Verarbeitung, wenn wir Bearbeiten und speichern Sie ein neues Produkt, wenn der Funktionsaufruf gleich ist?
Haben Sie docs.python.org angeschaut, um zu sehen, was die 'super'-Funktion macht? http://docs.python.org/library/functions.html#super Was hast du dort gelernt? –
Was meinst du mit "bearbeiten"? Meinst du "validieren"? Das ist ein separates Feature eines Formulars. Oder meinst du etwas anderes? –
Mit "2 Ansichten" meinst du "zwei Ansichtsfunktionen"? Wenn ja, bitte aktualisieren Sie Ihre Frage mit all diesen Informationen. Bitte beende das Hinzufügen von Kommentaren. Bitte aktualisieren Sie die Frage, um alle Fakten zu enthalten. Löschen Sie dann die Kommentare. –