"장고 모델 선택필드"의 두 판 사이의 차이
둘러보기로 가기
검색하러 가기
(새 문서: == 개요 == 무언가를 입력할 때 자유롭게 입력하는 게 아닌, 선택에 제약을 주고자 할 때 사용하는 기능. 기본적으로 <code>ChoiceField</code> 는...) |
|||
(같은 사용자의 중간 판 2개는 보이지 않습니다) | |||
3번째 줄: | 3번째 줄: | ||
기본적으로 <code>ChoiceField</code> 는 따로 없기때문에 CharField에서 옵션을 사용하는 방식으로 구현한다. | 기본적으로 <code>ChoiceField</code> 는 따로 없기때문에 CharField에서 옵션을 사용하는 방식으로 구현한다. | ||
+ | |||
+ | 혹은 ForeignKey로 다른 모델과 연결해두면 해당 모델 안의 객체에서만 선택할 수 있다. | ||
== 정의 == | == 정의 == | ||
15번째 줄: | 17번째 줄: | ||
) | ) | ||
선택속성 = models.CharField(choices=선택지, max_length=5, blank=False) # 옵션은 알아서. | 선택속성 = models.CharField(choices=선택지, max_length=5, blank=False) # 옵션은 알아서. | ||
+ | # max_length 옵션은 DB에 저장되는 데이터에 걸리는 제약. | ||
+ | 선택속성2 = models.ForeignKey(선택모델,on_delete=models.CASCADE, null=True, blank=True) | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == 탬플릿에서 사용 == | ||
+ | <syntaxhighlight lang="html+django"> | ||
+ | <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> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | === 탬플릿에서 출력 === | + | === 탬플릿에서 선택값 출력 === |
<nowiki>{{모델.속성}}</nowiki> 이 형태로 쓰면 DB에 기록된 형태의 데이터를 보여주고, | <nowiki>{{모델.속성}}</nowiki> 이 형태로 쓰면 DB에 기록된 형태의 데이터를 보여주고, | ||
<nowiki>{{모델.get_속성명_display}}</nowiki>로 쓰면 사용자에게 보여지는 형태의 데이터를 보여준다. | <nowiki>{{모델.get_속성명_display}}</nowiki>로 쓰면 사용자에게 보여지는 형태의 데이터를 보여준다. | ||
[[분류:장고 모델]] | [[분류:장고 모델]] |
2021년 6월 22일 (화) 12:59 기준 최신판
1 개요[편집 | 원본 편집]
무언가를 입력할 때 자유롭게 입력하는 게 아닌, 선택에 제약을 주고자 할 때 사용하는 기능.
기본적으로 ChoiceField
는 따로 없기때문에 CharField에서 옵션을 사용하는 방식으로 구현한다.
혹은 ForeignKey로 다른 모델과 연결해두면 해당 모델 안의 객체에서만 선택할 수 있다.
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에 저장되는 데이터에 걸리는 제약.
선택속성2 = models.ForeignKey(선택모델,on_delete=models.CASCADE, null=True, blank=True)
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}}로 쓰면 사용자에게 보여지는 형태의 데이터를 보여준다.