2010-03-26 12 views
0

Je développe une application sur app-engine-path. Je voudrais faire la forme avec multichoice (langues acceptables pour l'utilisateur). code ressemble à ceci:Champ de formulaire à choix multiple dans Django

Paramètres de langue:

settings.LANGUAGES = ((u"cs", u"Čeština"), (u"en", u"English")) 

modèle de formulaire:

class UserForm(forms.ModelForm): 
    first_name = forms.CharField(max_length=100) 
    last_name = forms.CharField(max_length=100) 

    languages = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, 
              choices=settings.LANGUAGES) 

La forme est rendue Ö.K (toutes les langues ont la case à cocher. ID, NOM est correct.) Mais si j'enregistre quelques langues pour l'utilisateur, les langues ne cocheront pas les cases.

modèle utilisateur ressemble à ceci

class User(User): 
    #... 
    languages = db.StringListProperty() 
    #... 

et vue:

def edit_profile(request): 
    user = request.user 

    if request.method == 'POST': 
     form = UserForm(request.POST) 
     if form.is_valid(): 
      # ... 
    else: 
     form = UserForm(instance=user)   
    data = {"user":user, "form": form} 
    return render_to_response(request, 'user_profile/user_profile.html', data) 

Répondre

0

Je résolus de cette façon:

some_view(request): 
    ... 
    form = UserForm(instance=user, initial={"languages":user.languages}) 
    ... 
+0

Ne pas oublier d'accepter la réponse si cela a fonctionné. – John

Questions connexes