2009-03-22 5 views
4

템플릿에서 form.fields를 반복하고 다음을 위해 노력하고 있습니다.django : form.fields는 인스턴스 필드를 반복하지 않습니다.

{% for field in form.fields %} 
    {{ field }}, 
{% endfor %} 

렌더링 된 html 코드 대신 필드 이름 ("name, description ...") 목록을 가져옵니다. 다음을 사용할 때 :

{{ form.name }}, {{ form.description }} 

(이 경우 출력은 다음과 같습니다.

< input id = "id_name"type = "텍스트"name = "이름"maxlength = "200"/ > < 입력 ID = "id_description"....

힌트? 고마워!

답변

10

"form.fields"가 아니라 "form"을 반복하고 싶습니다. 후자는 Field 인스턴스를 반환하고, 전자는 BoundField 인스턴스를 반환합니다 (바인딩되지 않은 폼의 경우에도 마찬가지 임). 이는 위젯 HTML을 렌더링합니다.

form.visible_fields 및 form.hidden_fields는 폼의 표시/숨김 필드 만 가져 오는 유틸리티 메서드이지만 BoundField 인스턴스도 반환합니다. 그들은 어떤면에서도 form.fields와 평행하지 않습니다 (나는 이것이 가능한 가장 깨끗한 API가 아니라는 것에 동의합니다).

0

얻을 수있는 필드는 django.forms.Field 인스턴스입니다. HTML 뷰를 가져 오려면 위젯 기능을 사용할 수 있습니다. {{field.widget}}

+0

{{field.widget}}도 빈 문자열을 반환합니다. 솔루션을 찾았습니다. - 아래를 참조하십시오. – nivhab

2

"form.fields"대신 "form"을 반복하면 문제가 해결되었습니다. 문서는 또한 다음과 같은 예를 제공하기 때문에 이유는 확실하지 : 또한 빈 세트 결과

{% for field in form.visible_fields %} 
... 

합니다. 내 양식이 묶여 있지 않다는 사실과 관련이 있습니까? 확실하지 않음 ...

관련 문제