Models - Fields (verbose field names)
ForeignKey
, ManyToManyField
그리고 OneToOneField
들을 제외한, 각 필드 타입은 선택적으로 첫번째 위치인자로, verbose name
을 받습니다.
verbose name
이 주어지지 않았을때는, Django 는 자동으로 field 의 속성명의 언더스코어를 공백으로 전환하여 verbose name 을 생성합니다.
verbose name 은
사용자가 사용하는 자세한 이름을 의미합니다
verbose name
을 지정하지 않으면, 어드민에 표시되는 이름이 이상하다는것을 느낄수 있을겁니다.
아래 예시에서, verbose name 은 “person’s first name” 입니다
1 | first_name = models.CharField("person's first name", max_length=30) |
아래 예시에서는, verbose name 이 “first name” 입니다.
필드 타입의 첫번째 인자로, verbose name 이 명시되지 않았기 때문에,
필드명 first_name 에서, 언더스코어를 공백으로 전환하여 verbose name 을 표시합니다.
1 | first_name = models.CharField(max_length=30) |
verbose_name 을 정의한 모델의 예시입니다.
1 | class Members(models.Model): |
위 Members 모델에서는, name, nick_name, birth_date 이 각각 한글로 표시된 verbose_name 들을 어드민에 표시할것입니다.
외래키 모델들
아직 살펴보지는 않았지만, ForeignKey
, ManyToManyField
그리고 OneToOneField
들은 첫번째 인자로 모델 클래스가 옵니다.
따라서,
verbose_name
을 키워드 인자로 사용해줍니다.
1 | poll = models.ForeignKey(Poll, on_delete=models.CASCADE, verbose_name="the related poll") |
위의 예시에서는, 단지 ForeignKey
, ManyToManyField
그리고 OneToOneField
를 사용할때에, verbose_name 이 어떻게 키워드 인자로 들어가는지에 대한 코딩 스타일만 보여주고 있습니다.
관례적으로,
verbose_name 의 첫번째 글자는 대문자로 써주지 않습니다.
Django 가 필요할때 자동으로 첫번째 글자를 대문자화 해줍니다.
마치며..
verbose_name 에 대해서 알아보았습니다.
verbose_name 을 사용하면, 어떤것이 달라지는지 완벽한 예시가 있으면 좋았을텐데,
현재까지는, verbose_name 을 사용할경우, 해당 필드가 어드민에 표시되는 바가 달라지게 된다는점을 알고 넘어가면 될것 같습니다.
지난 포스팅에서 Runner 모델을 작성했었는데, 아래와 같이,
name 필드에 verbose_name 을 추가해주었습니다. “러너 이름”
1 | class Runner(models.Model): |
위와같이 verbose_name 을 모델 필드에 추가하면, 아래처럼 어드민에 “러너이름” 이라고 표시가 됩니다.