2010-01-17 4 views
4

Je travaille avec un formulaire django et j'ai un champ de choix. Je pense que le problème peut être que les choix sont récupérés dynamiquement, et maintenant il n'y a qu'une seule valeur. Je reçois le TemplateSyntaxError: too many values to unpack. Certains des autres messages semblent dire que le fait d'avoir une seule valeur est un problème, donc j'ai ajusté ma fonction qui récupère les choix, et l'ai modifiée pour qu'elle s'ajoute aux options vides au début, juste comme un test. Cependant ceci a soulevé une autre erreur: need more than 0 values to unpackDjango TemplateSyntaxError: trop de valeurs pour décompresser

Pas vraiment sûr de ce qu'il faut faire à ce sujet, car même s'il n'y a qu'une seule valeur, j'en ai besoin pour continuer à l'exécuter.

Forme:

class UploadFileForm(forms.Form): 
    category = forms.ChoiceField(get_category_list()) 
    file = forms.FileField() 

Catégorie Fetch Fonction:

def get_category_list(): 
    cats = [(),()] 
    for i in os.listdir(settings.MEDIA_ROOT + '/forms'): 
     cats.append(i) 
    return cats 

Modèle Section:

<div id='addformdialog' title='Add Form'> 
    {{ form.as_p }} 
</div> 

Vue:

def fm(request): 
    if request.session['SecurityLevel'] != 2: 
     return HttpResponse('Access Denied!') 

    if request.method == 'POST': 
     form = UpoadFileForm(request.POST, request.FILES) 
     if form.is_valid(): 
      destination = open(settings.MEDIA_ROOT + "/forms/" + request.POST['category'] + "/" + request.FILES['file'].name, 'wb+') 
      for chunk in request.FILES['file'].chunks(): 
       destination.write(chunk) 
      destination.close() 
      form = UploadFileForm() 
      return render_to_response('admin/fm.html', {'categories':cats, 'form':form, 'uploadsuccess':True}) 
    else: 
     cats = get_category_list() 
     form = UploadFileForm() 
     return render_to_response('admin/fm.html', {'categories':cats, 'form':form}) 
+1

... Code? Modèle? *N'importe quoi*? –

+0

Ceci est une erreur de modèle générique. Si vous voulez de l'aide, vous devez fournir le code. Idéalement, le fragment de modèle et la vue qui fournit le contexte. –

+0

Ok, désolé, j'ai mis à jour avec du code. –

Répondre

6

choices est censé être un itérable de 2-tuples. Vous n'ajoutez qu'une seule chaîne, ce qui provoque un chaos dû à l'interaction des chaînes et des tuples (je vous donnerai des détails si vous vous en souciez vraiment). Ajoutez 2-tuples à la place.

+0

Cela ne semblait pas faire de différence. –

+0

Vous souvenez-vous d'avoir retiré les éléments fictifs originaux? Aussi, vous voudrez peut-être montrer plus de code afin que nous sachions que vous comprenez ce que "cela" voulait dire. –

+0

Ok, j'ai mis à jour la fonction get_category_list() ici. –

Questions connexes