Django 모형CharField 필드 유형 정의 더 우아한 Choice

1291 단어 Django
공식 추천서
class SexType(objects):
    MALE = 'M'
    FEMALE = 'F'
    UNKNOWN = 'N/A'

    CHOICES = (
        (MALE, ' '),
        (FEMALE, ' '),
        (UNKNOWN, u'  '),
    )


class User(models.Model):
    username = models.CharField(max_length=20, unique=True, verbose_name='  ')
    sex = models.CharField(max_length=3, default=SexType.UNKNOWN, choices=SexType.CHOICES, verbose_name='  ')

효과:
  • 데이터베이스에 저장된 값은'M''F'N/A'
  • 비즈니스 논리에서 쉽게 판단할 수 있는 User.objects.filter(sex=SexType.MALE)
  • 서열화기는 필드에 대한 설명 정보(label 값)를 되돌려줍니다:
  • class UserSerializer(serializers.ModelSerializer):
        sex_t = serializers.CharField(source='get_sex_display', read_only=True, required=False)
        #source='get_sex_display'     get_xxx_display
        class Meta:
            model = User
            fields = ('id', 'name', 'sex', 'sex_t')
    
         :
    [
        {"id": 1,
         "name": "  ",
         "sex": "M",
         "sex_t": " "
        },
        {"id": 2,
         "name": "  ",
         "sex": "F",
         "sex_t": " "
        }
    ]

    좋은 웹페이지 즐겨찾기