
두둥 !
다시 왔어요. 저번에 또 처음 알게 된 것을 소개해드리고 싶어서 왔습니댜 ㅎㅎ
참 배움에는 끝이 없어요 그쵸? 😂
어찌 저는 이걸 올해 처음 접하게 되었을까요 .. 그동안 왜 본 적이 없죠 !!
💡 verbose_name 이란?
Django 모델 > 필드에서 "사람이 읽을 수 있는 이름(라벨)"을 지정하는 옵션. 기본적으로 필드 이름은 코드에서 사용하는 '변수명'이지만, verbose_name을 설정하면 '관리자 페이지나 폼에서 그 필드를 이해하기 쉽게 표시'할 수 있음.
음 뭔 소리지? 하면서 봤었다. 그래서 일단 적용해보고 차이를 파악하자! 했었다.
예를 들어 보자!!
class Booth(models.Model):
OPERATED_STATUS = [
('운영 중', '운영 중'),
('운영 전', '운영 전'),
('운영 마감', '운영 마감'),
]
id = models.AutoField(primary_key=True)
event = models.ForeignKey(Event, on_delete=models.CASCADE, related_name="booths")
name = models.CharField(max_length=100, verbose_name="부스명")
description = models.TextField(verbose_name="부스 설명")
location = models.CharField(max_length=255, verbose_name="부스 위치")
is_operated = models.CharField(max_length=10, choices=OPERATED_STATUS, verbose_name="운영 여부")
open_time = models.DateTimeField(verbose_name="시작 시간")
close_time = models.DateTimeField(verbose_name="마감 시간")
위의 코드에서 각각마다 verbose_name을 부여하였다.

위는 어드민 화면이다.
자자 차이가 보이는가?
위 사진을 보면 event는 영어(필드명 자체)고 나머지는 한글이다.
자 이제 다시 코드를 봐봐라. event 필드에는 verbose_name이 설정되어 있지 않다. 그래서 그냥 필드명 그 자체로 표시가 되는 것이다!
오호라.. 한국인이니까 한국어가 더 편할 수도 있다!
그럴 때면 사용하기 좋을 것 같다 !!!
왕추 강추 !!!!
두둥 두 번째 개념이다.
verbose_name이랑 뭐가 다를까?
사실 related_name은 장고 처음부터 많이 써왔던 것들이다 ㅎㅎ
그래서 verbose_name보다 매우 익숙하다. 근데 이참에 한 번 공부를 해보았다 간단하게지만^^
💡 related_name 이란?
Django에서 ForeignKey나 OneToOneField, ManyToManyField와 같은 관계 필드를 설정할 때, 역참조할 때 사용할 이름을 지정하는 옵션!
잘 모르겠다고요 !?
예시를 봅시다 !!
class Booth(models.Model):
name = models.CharField(max_length=100)
class BoothMenu(models.Model):
booth = models.ForeignKey(Booth, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
위에서 Booth 모델은 여러개의 BoothMenu와 연결될 수 있는 관계임 !
근데 여기서, Booth 모델에서 BoothMenu를 역참조하려면 boothmenu_set을 사용해야 함(모델명필드명)
즉, 아래와 같이 써야 함.
booth = Booth.objects.get(id=1)
menus = booth.boothmenu_set.all()
함 써보자 !!
class Booth(models.Model):
name = models.CharField(max_length=100)
class BoothMenu(models.Model):
booth = models.ForeignKey(Booth, on_delete=models.CASCADE, related_name='menus')
name = models.CharField(max_length=100)
위와 같이 related_name='menus' 라고 작성해준다.
역참조할 때 'menus'를 사용하겠다는 뜻이고 이걸 이용해서 서로 와리가리 쓸 수 있는 것이다.
이때 아래와 같이 쓰면 된다.
booth = Booth.objects.get(id=1)
menus = booth.menus.all()
뭐야!? 코드 줄 수는 같은 거 아냐?!
할 수도 있지만 더 많은 개발을 하다보면 .. related_name의 편리성을 느끼게 될 것이다 💗
후후 오늘은 여기까지 ...
앞으로 더 많이 가져오겠다 우가우가
개발팅 ⭐️