2014-04-12 2 views
1

Django/Python 신입 사원. 나는 장고 양식을 사용하여 사용자를 선택하고있다. 먼저 queryset은 group__name에 따라 필터링을 수행하고, 양식은 체크 박스 위젯으로 HTML을 생성합니다. 그것은 기본적이고 잘 작동합니다. HTML에 'User.last_name User.email'을 표시하고 싶습니다. 확인란을 제외하고 'User.username'뿐만 아니라. 이 위젯의 ​​기본 동작을 변경하는 것이 가능합니까?django 폼 위젯 checkboxselectmultiple 렌더링 방법 User.last_name

# 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

음, 비슷한 문제가 발생했습니다. 희망 사항이 적용됩니다.

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") 
: 지금은이 기준으로 목록을 보여

def appended_list(items, item): 
    items.append(item) 
    return items 


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

:

먼저 나는 forms.py의 두 가지 방법을 만들어