๋ ๊ฐ์ ์์ดํ ์ผ๋ก ์ด๋ฃจ์ด์ง ํํ์ ํ๋๋ก ์ฌ์ฉํ๋ค.
๊ฐ ํํ์ ์ฒซ ๋ฒ์งธ ์์๋ DB์ ์ ์ฅํ ์ค์ ๊ฐ์ด๊ณ , ๋ ๋ฒ์งธ ์์๋ display ์ฉ ์ด๋ฆ์ด๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
YEAR_IN_SCHOOL_CHOICES = [
('FR', 'Freshman'),
('SO', 'Sophomore'),
('JR', 'Junior'),
('SR', 'Senior'),
]
์์ ๊ฐ์ด CHOICES
ํ๋๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํด๋๊ณ CharField
์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
from django.db import models
class Student(models.Model):
FRESHMAN = 'FR'
SOPHOMORE = 'SO'
JUNIOR = 'JR'
SENIOR = 'SR'
YEAR_IN_SCHOOL_CHOICES = [
(FRESHMAN, 'Freshman'),
(SOPHOMORE, 'Sophomore'),
(JUNIOR, 'Junior'),
(SENIOR, 'Senior'),
]
year_in_school = models.CharField(
max_length=2,
choices=YEAR_IN_SCHOOL_CHOICES,
default=FRESHMAN,
)
def is_upperclass(self):
return self.year_in_school in (self.JUNIOR, self.SENIOR)
๋ค์์ฒ๋ผ CHOICES
๋ฅผ ๊ทธ๋ฃน์ผ๋ก ์ ์ํ ์๋ ์๋ค.
MEDIA_CHOICES = [
('Audio', (
('vinyl', 'Vinyl'),
('cd', 'CD'),
)
),
('Video', (
('vhs', 'VHS Tape'),
('dvd', 'DVD'),
)
),
('unknown', 'Unknown'),
]
๊ฐ ํํ์ ์ฒซ ๋ฒ์งธ ์์๋ ๊ทธ๋ฃน์ ์ ์ฉ ํ ์ด๋ฆ์ด๋ค.
๋ ๋ฒ์งธ ์์๋ 2 ๊ฐ์ ํํ์ ๋ฐ๋ณต ํ ์ ์์ผ๋ฉฐ ๊ฐ 2 ๊ฐ์ ํํ์๋ ์ค์ ๊ฐ๊ณผ display ์ด๋ฆ์ด ๋ค์ด ์๋ค.
๊ทธ๋ฃนํ ๋ ์ต์
์ ๋จ์ผ ๋ชฉ๋ก ๋ด์์ ๊ทธ๋ฃนํ๋์ง ์์ ์ต์
(unknown
)๊ณผ ๊ฒฐํฉ ๋ ์ ์๋ค.
choices
๊ฐ ์ค์ ๋ ๋ชจ๋ ํ๋๋ get_FOO_display()
๋ฉ์๋๋ฅผ ๊ฐ๋๋ค.
์ด ๋ฉ์๋๋ ์ฌ๋์ด ์ฝ์ ์ ์๋ display ์ฉ ๊ฐ์ ๋ฐํํ๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
from django.db import models
class Person(models.Model):
SHIRT_SIZES = (
('S', 'Small'),
('M', 'Medium'),
('L', 'Large'),
)
name = models.CharField(max_length=60)
shirt_size = models.CharField(max_length=2, choices=SHIRT_SIZES)
>>> p = Person(name="Fred Flintstone", shirt_size="L")
>>> p.save()
>>> p.shirt_size
'L'
>>> p.get_shirt_size_display()
'Large'
view ๋ฟ๋ง ์๋๋ผ template์์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋์ํ๋ค.