2009-12-27 5 views
0

J'ai un URLPATTERN qui apporte un modèle qui permet aux champs d'une instance de modèle à visualiser:passer une valeur à une demande HttpResponse

(r'^display/(?P<id>\w+)/', display_record), 

J'ai aussi une fonction d'affichage qui permet à une seule instance d'être édité. Lorsque l'objet est enregistré, il retourne simplement au même modèle:

if form.is_valid(): 
     form.save() 
     return HttpResponseRedirect('/') 

Après la sauvegarde, comment puis-je retourner au modèle d'affichage, par opposition à l'actualisation de la même vue? le code ressemblerait à quelque chose comme ce qui suit, mais je besoin d'un moyen de passer l'objet « id » à la demande HttpResponse:

def edit_record(request, id): 
     if request.method == 'POST': 
       a=ProjectRecord.objects.get(pk=id) 
       form = RecordForm(request.POST, instance=a) 
       if form.is_valid(): 
         form.save() 
         return HttpResponseRedirect**('/display/(?P<id>\w+)/')** 
     else: 
       a=ProjectRecord.objects.get(pk=id) 
       form = RecordForm(instance=a) 
     return render_to_response('productionModulewire.html', {'form': form}) 

Répondre

6

Vous choses trop compliquer. Vous savez déjà ce qu'est l'ID, alors pourquoi ne pouvez-vous pas le remettre dans l'URL?

return HttpResponseRedirect('/display/%s/' % id) 

ou, mieux, car il ne vous lie pas à une URL particulière codée en dur:

return HttpResponseRedirect(reverse('edit_record', kwargs={'id':id})) 
+0

Merci Daniel. C'est ce que j'essayais de faire. Je ne savais pas la syntaxe correcte. Merci encore. – kjarsenal

+0

Cela ne fonctionne pas pour moi et je ne sais pas pourquoi. Voici ce que j'ai: – ThatAintWorking

Questions connexes