2010-07-29 5 views
0

J'ai un modèle qui a un bouton qui messages juste de nom du bouton à une vue qui a le code suivant:récupération modèle Django donne mauvaise erreur de type

if request.POST: 
    a = request.POST 
    name = mymodel.objects.get(id = a)[0] 
     return HttpResponse(name) 

request.POST a le nom du bouton soumis le post. L'erreur est la suivante: int() argument doit être une chaîne ou un nombre, pas 'QueryDict'

Cependant, quand je le fais: a = request.POST['name], django soulève un non 'nom' dans l'erreur de publication. Comment puis-je réparer ça?

Répondre

0

La façon la plus simple de faire ceci est d'utiliser un champ caché. Un bouton n'est pas vraiment un bon moyen de déplacer des données.

3

Ce retourne un QueryDict (similaire à un dictionnaire python) avec les données qu'il request.POST

de toute façon

request.POST['name'] 

devrait fonctionner. Je dirais qu'il n'y a pas de 'nom' dans la clé. pearhaps est appelé 'id_name' ou quelque chose comme ça.

Jetez un oeil un contenu de la dict requête avec un débogueur ou avec une instruction d'impression:

print request.POST 
+0

J'ai suivi ur lien QueryDict et dans mon view.py mis en ceci: 'return HttpResponse (a.items())' Cette imprimé: (u'6' , u'Delete '). Supprimer est le nom du bouton et 6 est la valeur. Comment puis-je les retourner afin que je puisse utiliser request.POST ['Delete']? – Ali

+1

montrez-nous votre formulaire et code de modèle – chefsmart

1

Imaginez le code suivant dans votre modèle: -

<form> 
    <button type="submit" name="option_one" value="option_one">Option One</button> 
    <button type="submit" name="your_second_option" value="your_second_option">2nd Option</button> 
</form> 

Vous pourriez faire ceci à votre vue: -

def your_view(request): 
    if request.POST.has_key('option_one'): 
     #do your stuff 
    if request.POST.has_key('your_second_option'): 
     #do other stuff 
Questions connexes