사용자 목록이 선택된 페이지를 만들려고합니다. 사용자가 선택하면 해당 사용자에게 일부 작업이 적용됩니다. 나는 테이블에 나열된 사용자를 가지고 있고이 테이블의 마지막 열이 그 체크 박스가되고 싶어요 내 템플릿에서템플릿에 django 양식 필드를 렌더링하는 방법
#in forms.py
class UserSelectionForm(forms.Form):
"""form for selecting users"""
def __init__(self, userlist, *args, **kwargs):
self.custom_fields = userlist
super(forms.Form, self).__init__(*args, **kwargs)
for f in userlist:
self.fields[str(f.id)] = forms.BooleanField(initial=False)
def get_selected(self):
"""returns selected users"""
return filter(lambda u: self.fields[str(u.id)], self.custom_fields)
: 나는이처럼 보이는 폼 클래스를 만들었습니다. 그들의 이름에 따라 하나씩 필드를 렌더링해야합니다. 내가 필요한 양식 요소의 HTML 코드 반환 템플릿 태그를 만드는 시도 :
<form action="" method="post">
{% csrf_token %}
<table class="listtable">
<tr>
<th>Username</th>
<th>Select</th>
</tr>
{% for u in userlist %}
<tr>
<td>{{u.username}}</td>
<td>{{select_form|user_select_field:u.id}}</td>
</tr>
{% endfor %}
</table>
<p><input type="submit" value="make actions" /></p>
그러나, 이것은에 그 위젯을 결합하지 않습니다 마지막으로
#in templatetags/user_list_tags.py
from django import template
register = template.Library()
#this is django template tag for user selection form
@register.filter
def user_select_field(form, userid):
"""
returns UserSelectionForm field for a user with userid
"""
key = std(userid)
if key not in form.fields.keys():
print 'Key %s not found in dict' % key
return None
return form.fields[key].widget.render(form, key)
을, 여기에 템플릿 코드입니다 양식을 제출 한 후 유효성 검사가 실패합니다. 모든 사용자 정의 필드가 필요하다는 오류 메시지가 표시됩니다. 그래서 여기 내 질문은 :
별도의 양식 필드를 렌더링하는 올바른 방법은 무엇입니까?
체크 박스가있는 양식을 만드는 올바른 방법은 무엇입니까? (어쩌면 의미 내 방법은 바보이고 내가 원하는 것을 달성 훨씬 쉬운 방법이있다.
어쩌면 작은 자바 스크립트로 이것을 시도해야합니다. – unni
나는이 단계에서 내 프로젝트에서 자바 스크립트를 사용하고 싶지 않았다. 그러나 정확히 무엇을해야합니까? 또는 나는 무엇을 google해야 하는가? 당신은 내가 거대한 자바 스크립트 pro = 아니란 것을 안다.) –