Django

장고, ChoiceField 구현

수알치 2021. 11. 13. 17:59

장고, ChoiceField 구현

 

정리. 수알치 오상문

 

장고 DB model에 ChoiceField는 없으며, 대신 CharFieldchoice 옵션을 추가하여 구현합니다.

 

예를 들어 상품 카테고리가 전체, 성인, 아이들, 아기라고 나뉠 때 CATEGORY_CHOICE라는 튜플형 튜플을 만들고 CharField의 choices 옵션에 지정합니다. 튜플의 튜플 앞 값은 DB에 저장되는 값이고 뒷 값은 폼이나 템플릿 등에서 출력하는 값입니다.

 

# models.py

from django.db import models

 

class Product(models.Model):

  # choice 옵션에 지정할 값

  CATEGORY_CHOICE = (

    ('EV', 'Everyone'),

    ('AD', 'Adult'),

    ('CH', 'Children'),

    ('BA', 'Baby'),

  )

 

  # 상품 카테고리 필드

  category = models.CharField(max_length=2, choices=CATEGORY_CHOICE)

 

 

장고 template(HTML 파일)에서 값을 출력할 수 있습니다.

 

{{ product.category }}

--> EV

 

축약 형태 값 대신에 튜플 값의 두 번째 내용을 출력하려면 get_필드명_display를 사용합니다.

{{ product.get_category_display }}

--> Everyone

 

참고:

https://ssungkang.tistory.com/entry/Django-ChoiceField-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0?category=320582

 

반응형