본문 바로가기

Legacy(~18.10)/Django

[Django TIPS] Model에서 CharField selectbox로 선택하는 방법

반응형

[Django TIPS] Model에서 CharField selectbox로 선택하는 방법

기존 Django Model에서 CharField는 input field에 입력 받는 형태로 주로 사용 된다.

예를 들면, ID / PW 같은 경우이다.

그런데, 만약 Model의 CharField를 selectBox를 이용해서 미리 정해둔 범위 내에서 선택하도록 유도하는 방법으로 하려면

다음과 같이 할 수 있다.


ex)

class User(AbstractUser):
   
   # 각각의 변수 / 보여지는 단어 로 이루어진 튜플을 가진 dict를 다음과 같이 생성
   GENDER_CHOICES = {
      ('male','Male'), #오른쪽에 있는 것이 화면에 보인다.
      ('female', 'Female'),
      ('not-specified', 'Not Specified')
  }

   # First Name and Last Name do not cover name patterns
   # around the globe.
   name = models.CharField(_("Name of User"), blank=True, max_length=255)
   website = models.URLField(null=True)
   bio = models.TextField(null=True)
   phone = models.CharField(max_length=140, null=True)
   #choices를 추가해주고, 거기에 위에서 정의한 dict를 넣어준다.
   gender = models.CharField(max_length=80, choices=GENDER_CHOICES, null=True)

   def get_absolute_url(self):
       return reverse("users:detail", kwargs={"username": self.username})


아래와 같이 나오게 된다.


반응형