1 개요
무언가를 입력할 때 자유롭게 입력하는 게 아닌, 선택에 제약을 주고자 할 때 사용하는 기능.
기본적으로 ChoiceField
는 따로 없기때문에 CharField에서 옵션을 사용하는 방식으로 구현한다.
2 정의
from django.db import models
class 모델명(models.Model): # 이게 하나의 테이블이 된다.
선택지 = ( # 이중튜플로 선택지를지정한다.
('DB에저장되는 내용1', '폼 등에서 표시하는값1'),
('DB에저장되는 내용2', '폼 등에서 표시하는값'2),
...
)
선택속성 = models.CharField(choices=선택지, max_length=5, blank=False) # 옵션은 알아서.
# max_length 옵션은 DB에 저장되는 데이터에 걸리는 제약.
3 탬플릿에서 사용
<select class='알아서' data-title="제목" data-style="알아서" data-menu-style="알아서">
{% for x,y in form.fields.선택속성.choices %}
<option value="{{ x }}"{% if form.fields.gender.value == x %} selected{% endif %}>{{ y }}</option>
{% endfor %}
</select>
3.1 탬플릿에서 선택값 출력
{{모델.속성}} 이 형태로 쓰면 DB에 기록된 형태의 데이터를 보여주고,
{{모델.get_속성명_display}}로 쓰면 사용자에게 보여지는 형태의 데이터를 보여준다.