【问题标题】:django form widget checkboxselectmultiple how to render User.last_namedjango 表单小部件 checkboxselectmultiple 如何呈现 User.last_name
【发布时间】:2014-05-26 18:23:27
【问题描述】:

Django/Python 新手。我正在使用 django 表单在用户中进行选择。 首先查询集根据 group__name 过滤,然后表单生成带有复选框小部件的 HTML。这是基本的并且运行良好。 我想要显示“User.last_name User.email”的 HTML。不仅是“User.username”复选框。 是否可以(并且容易)更改此小部件的默认行为?

# model is User
# forms
class SelMembersForm(forms.Form):

    qs = User.objects.filter(groups__name='any_group_name')
    picked = forms.ModelMultipleChoiceField(qs, widget=forms.CheckboxSelectMultiple())

# views
def members_select(request):
    if request.method == 'POST':
        form = SelMembersForm(request.POST)
        if form.is_valid():
            picked = form.cleaned_data.get('picked')

    else:
        form = SelMembersForm

    return render_to_response('staff/selmembers.html', {'form':form },
    context_instance=RequestContext(request))


# template
<form method='post'> {% csrf_token %}
    {{ form.as_p }}
    <input type='submit' value='submit'>
</form>

【问题讨论】:

    标签: django forms checkbox widget


    【解决方案1】:

    好吧,我已经实现了类似的问题,希望这对你有用。

    首先我在forms.py中做了两个方法:

    def appended_list(items, item):
        items.append(item)
        return items
    
    
    def inserted_list(items, index, item):
       items.insert(index, item)
       return items
    

    现在我用这个来显示列表:

     picked= forms.ChoiceField(required=False, widget=forms.SelectMultiple( initial=1, choices=inserted_list([(x.id,  x.username+": "+x.first_name+" "+x.last_name) for x in User.objects.all()], 0, ('0', ' --')),label="PICKED")
    

    【讨论】:

    猜你喜欢
    • 2011-12-16
    • 2017-10-27
    • 2013-01-14
    • 2023-03-17
    • 2017-01-03
    • 2010-10-14
    • 2017-09-11
    • 1970-01-01
    相关资源
    最近更新 更多