일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- js
- es6
- javascript
- MAC
- 장고
- DRF
- Git
- react
- 알고리즘
- django rest framework
- django widget
- AWS
- web
- 파이썬 알고리즘
- django ORM
- 백준
- 알고리즘 연습
- Baekjoon
- API
- PYTHON
- Django
- Algorithm
- c++
- java
- 파이썬
- 알고리즘 풀이
- form
- HTML
- 알고리즘 문제
- CSS
Archives
- Today
- Total
수학과의 좌충우돌 프로그래밍
[Django] ChoiceField 사용하기 본문
사용자한테 값을 입력 받을 때, checkbox
나 radio
등을 이용해서 값을 받는 경우도 자주 볼 수 있습니다. django 기본 db인 sqlite3 의 경우에는 이 값을 model
에서는 어떤 필드로 받아주는게 좋을까요? 이에 대해서 알아보도록 하겠습니다.
ChoiceField
기본적으로 ChoiceField
는 따로 존재하지 않습니다. 그렇기 때문에 다른 field 에 choice의 기능을 추가해줘야하는데 CharField
를 기본으로 합니다. 예시를 통해서 알아보겠습니다.
# models.py
from django.db import models
class Person(models.Model):
NATIONAL_CHOICES = (
('AD', 'Andorra'),
('AF', 'Afghanistan'),
('AG', 'Antigua'),
...
)
nationality = models.CharField(max_length=2, choices=NATIONAL_CHOICES)
NATIONAL_CHOICES
라는 2중 튜플을 만들고 이를 CharField
에 choices
옵션과 연결 해줍니다. 이럴 경우, 튜플의 앞에 값은 db에 저장되는 값, 뒤에 값은 admin 페이지나 폼에서 표시하는 값이 됩니다.
templates 에서 값 출력
template
변수를 통해서 db에 저장된 값을 출력할 수가 있습니다.
# main.html
{{ person.nationality }} # AD
하지만 db 에 값은 사용자가 보기에는 불편할 수도 있는 축약된 형태로 저장하기 때문에 이 값이 아닌, 튜플의 두 번째 값을 출력하기를 원할 경우도 있습니다. 그럴 경우에, get_필드명_display
으로 이를 얻을 수 있습니다.
# main.html
{{ person.get_nationality_display }} # Andorra
'웹프로그래밍 > Django' 카테고리의 다른 글
[Django] Channels, 비동기적 채팅 구현하기 - WebSocket (2) (4) | 2019.07.11 |
---|---|
[Django] Channels, 비동기적 채팅 구현하기 - WebSocket (1) (4) | 2019.07.10 |
[Django]message framework 알아보기 (0) | 2019.07.06 |
[Django]Date와 Time을 나타내는 template filter (0) | 2019.07.05 |
[Django] 모델 관계 제거하기 (0) | 2019.06.02 |
Comments