2008-11-22 7 views
1

Dans mon views.py, j'ai une snippit de code comme ceci:utilisant rstrip sur form.cleaned_data [i] dans Django

def clean_post_data(form): 
    for i in form.cleaned_data: 
     form.cleaned_data[i] = form.cleaned_data[i].rstrip() 

def add_product(request): 
    form = ProductForm(request.POST, request.FILES or None) 
    image = Image.objects.all() 
    action = "Add" 

    if request.POST: 
     if form.is_valid(): 
      clean_post_data(form) 
      form.save() 
      action = "Added new product" 
      return render_to_response('cms/admin/action.html', {'action' : action},context_instance=RequestContext(request)) 
     else: 
      action = "There was an error. Please go back and try again" 
      return render_to_response('cms/admin/action.html', {'action' : action}, context_instance=RequestContext(request)) 

    return render_to_response('cms/admin/editproduct.html', {'form' : form, 'action' : action, 'image' : image}, context_instance=RequestContext(request)) 

Mais quand je cours, j'obtiens l'erreur suivante 'list' object has no attribute 'rstrip'. Qu'est-ce que je fais mal.

J'avais à l'origine la boucle for i in form.cleaned_data: directement dans la vue (pas dans une autre fonction) et cela a bien fonctionné, mais maintenant quand je l'essaie, j'ai la même erreur que ci-dessus. http://dpaste.com/92836/

Répondre

1

Le clean_post_data shouldn » t être une fonction autonome.

Il doit s'agir d'une méthode au format nommé clean. Voir Form and Field Validation.

0

Vous avez probablement plusieurs éléments sur votre formulaire avec le même nom. Lorsqu'il est soumis l'un des éléments retournés par cleaned_data est une liste

Si vous voulez sauter (ou faire quelque chose au sujet spécial) ces cas, vous devez vérifier pour elle:

 

def clean_post_data(form): 
    for i in form.cleaned_data: 
     if('__iter__' in dir(form.cleaned_data[i])): 
      print "skip this element: " + str(form.cleaned_data[i]) 
     else: 
      form.cleaned_data[i] = form.cleaned_data[i].rstrip() 
Questions connexes