한국어로 옮기기 어색한 단어들은 영문으로 혹은 해석이 애매한 구절은 직역한 그대로 사용 하였습니다.
Verbose field 이름
ForeignKey
, ManyToManyField
, OneToOneField
를 제외하면, 각각 필드 타입은 선택적인 첫번째 positional argument를 취한다. - 이를 verbose name 이라고 한다. 만약 verbose name이 주어지지 않으면, 장고는 자동으로 field의 속성이름을 사용하여서 underscore들을 space로 바꾸면서 자동으로 생성할 것이다.
아래 예제를 보면, verbose name은 person's first name
이다:
xxxxxxxxxx
first_name = models.CharField("persons's first name", max_length=30)
이 예제에서 verbose name 은 first name
이다:
xxxxxxxxxx
first_name = models.CharField(max_length=30)
ForeignKey
, ManyToManyField
and OneToOneField
는 첫번째 argument로 모델 class를 요구한다 그래서 verbose_name를 사용하기위해서는 keyword argument를 사용해야 한다.
xxxxxxxxxx
poll = models.ForeignKey(
Poll,
on_delete=models.CASCADE,
verbose_name="the related poll",
)
sites = models.ManyToManyField(Site, verbose_name="list of sites")
place = models.OneToOneField(
Place,
on_delete=models.CASCADE,
verbose_name="related place",
)
컨벤션은 verbose_name의 첫번째 문자를 대문자화 하지 않는 것이다. 장고는 필요하다면, 자동적으로 첫번째 문자를 대문자화 할 것이다
내 마음대로 해설
위 내용을 바탕으로 검증 해볼 것들은 아래와 같다.
1.verbose_name
을 positional arugemnt
로 지정해주지 않았을 때,
2.verbose_name
을 positional argument
로 지정해주었을 때,
3.verbose_name
이 주어지지 않았을 때,
4.ForeignKey
, ManyToManyField
, OneToOneField
중 하나 일 때,
1.verbose_name이 주어지지 않았을 때,
2.verbose_name을 keyword argument로 지정해주었을 때,
xxxxxxxxxx
class Person(models.Model):
first_name = models.CharField('이름', max_length=30)
last_name = models.CharField(verbose_name='성', max_length=30)
phone_number = models.CharField(max_length=40, unique=True, primary_key=True)
private_info = models.OneToOneField(PrivateInfo, on_delete=models.CASCADE, verbose_name='개인정보')
1.verbose_name
을 positional arugemnt
로 지정해주지 않았을 때,
xxxxxxxxxx
In [1]: person = Person.objects.all()[0]
In [2]: person._meta.get_field('first_name').verbose_name
Out[2]: '이름'
2.verbose_name
을 positional argument
로 지정해주었을 때,
xxxxxxxxxx
In [3]: person._meta.get_field('last_name').verbose_name
Out[3]: '성'
3.verbose_name
이 주어지지 않았을 때,
xxxxxxxxxx
In [4]: person._meta.get_field('phone_number').verbose_name
Out[4]: 'phone number'
4.ForeignKey
, ManyToManyField
, OneToOneField
중 하나 일 때,
4-1. verbose_name이 주어지지 않았을 때,
xxxxxxxxxx
class PrivateInfo(models.Model):
resident_number = models.CharField('이름', max_length=30)
class Person(models.Model):
first_name = models.CharField('이름', max_length=30)
last_name = models.CharField(verbose_name='성', max_length=30)
phone_number = models.CharField(max_length=40, unique=True, primary_key=True)
private_info = models.OneToOneField(PrivateInfo, on_delete=models.CASCADE)
xxxxxxxxxx
In [6]: person._meta.get_field('private_info').verbose_name
Out[6]: 'private info'
4-2. verbose_name을 keyword argument로 지정해주었을 때,
xxxxxxxxxx
class PrivateInfo(models.Model):
resident_number = models.CharField('이름', max_length=30)
class Person(models.Model):
first_name = models.CharField('이름', max_length=30)
last_name = models.CharField(verbose_name='성', max_length=30)
phone_number = models.CharField(max_length=40, unique=True, primary_key=True)
private_info = models.OneToOneField(PrivateInfo, on_delete=models.CASCADE, verbose_name='개인정보')
xxxxxxxxxx
In [4]: person._meta.get_field('private_info').verbose_name
Out[4]: '개인정보'
'개발 > 장고' 카테고리의 다른 글
[해설과 함께 읽는 Django 문서] Models - 다 대 다 관계 (0) | 2021.01.29 |
---|---|
[해설과 함께 읽는 Django 문서] Models - 다 대 일 관계 (0) | 2021.01.27 |
[해설과 함께 읽는 Django 문서] Models - Automatic primary key 필드 (0) | 2021.01.24 |
[해설과 함께 읽는 Django 문서] Models - 필드옵션 (0) | 2021.01.23 |
[해설과 함께 읽는 Django 문서] Models - Quick example, Using models (0) | 2021.01.20 |