Django / Python中的新手。我使用django表单在用户中进行选择。 首先,查询集根据group__name进行过滤,然后表单生成带有复选框小部件的HTML。它基本而且运作良好。 我希望HTML显示' User.last_name User.email'。不仅仅是' 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>
答案 0 :(得分:0)
好吧,我已经实现了类似的问题,希望这适合你。
首先,我在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")