"장고 모델 선택필드"의 두 판 사이의 차이
둘러보기로 가기
검색하러 가기
(→정의) |
(→정의) |
||
15번째 줄: | 15번째 줄: | ||
) | ) | ||
선택속성 = models.CharField(choices=선택지, max_length=5, blank=False) # 옵션은 알아서. | 선택속성 = models.CharField(choices=선택지, max_length=5, blank=False) # 옵션은 알아서. | ||
+ | # max_length 옵션은 DB에 저장되는 데이터에 걸리는 제약. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
2021년 6월 22일 (화) 12:49 판
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}}로 쓰면 사용자에게 보여지는 형태의 데이터를 보여준다.