首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Django中设置CheckBoxes值

如何在Django中设置CheckBoxes值
EN

Stack Overflow用户
提问于 2013-08-06 08:16:22
回答 1查看 3.2K关注 0票数 1

我想在Django-forms中设置复选框(BooleanField)的值。值是用户的名称,因此是变量。因此,设置默认值不是一个选项。

Forms.py

代码语言:javascript
复制
class UserForm(forms.Form):
   user    = forms.BooleanField()        // value set should be of the name of user

Template.html

代码语言:javascript
复制
{% for user in users %}
  {{user_form.as_table}} {{user.name}}
{%endfor%}

Views.py

代码语言:javascript
复制
users = GrabhaloUser.objects.all()
user_form = UserForm(request.POST or None)
if request.method == 'POST':
        if(user_form.is_valid()):
            selected_users = user_form.cleaned_data['user']
            #get_data(request,selected_users,query)     //this is some function. Ignore this.

ctx = {
            'users' : users,
            'user_form' : user_form
    }

return render_to_response('dashboard/dashboard.html',ctx, context_instance = RequestContext(request))

我该怎么解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2013-08-06 08:56:20

你应该重新考虑一下你的方法。表单中的user字段意味着什么,您希望如何使用它来选择用户?最有可能的是,ChoiceField更适用。有关此字段的详细信息,请参见例如这个问题

否则,重命名您的字段,使其更具描述性,例如selected。在这种情况下,您必须区分用户,这意味着您必须在表单标识符和名称前加上前缀。换句话说,手动构建表单。举个例子(根据你的具体需要来调整)

代码语言:javascript
复制
{% for user in users %}
  <input id="user_pk_{{ user.pk }}" value="{{ user.pk }}" type="hidden" />
  <input id="user_selected_{{ user.pk }}" type="checkbox"{% if user.selected %} checked="checked"{% endif %} />
  <input id="user_some_property_{{ user.pk }}" type="text" value="{{ user.some_property }}" />
{% endfor %}

最后,在您的观点中,获取所有条目并处理它们。同样,例如:

代码语言:javascript
复制
keys = [k for k in user_form.cleaned_data.keys() if k.startswith('user_pk_')]
pks = [pk..rsplit('_', 1)[-1] for pk in keys]
for pk in pks:
    user = User.objects.get(pk=pk)
    user.selected = user_form.cleaned_data['user_selected_'+pk]
    # Et cetera
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18074980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档