Django中的多选表单字段

0 投票
1 回答
1695 浏览
提问于 2025-04-15 20:52

我正在开发一个应用程序,使用的是app-engine-path。
我想做一个表单,让用户可以选择多种语言。代码大致是这样的:

语言设置:

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

表单模型:

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)

这个表单显示得很好(所有语言都有复选框,ID和名称也没问题)。
但是如果我为用户保存了一些语言,这些语言不会勾选复选框。

用户模型看起来是这样的:

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

还有视图:

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)

1 个回答

0

我这样解决的:

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

撰写回答