1. Django Tutorial(Airbnb) - Meta Class

🌈 Meta Class

🔥 abstract

🔥 verbose_name & verbose_name_plural

🔥 ordering


1. abstract

  • Meta Class의 abstract는 Default가 "abstract=False"이고, "abstract=True"로 할 경우 Abstract Model로 사용 가능 해요. 실제 존재하는 DB가 아닌 다른 Model에서 상속하여 사용할 목적으로 테이블을 만들 때 사용합니다.
class AbstractItem(core_models.TimeStampedModel): # 👈 TimeStampedModel 상속 받음
    """AbstractItem Object Definition"""
    name = models.CharField(max_length=80)
    class Meta:
        abstract = True # 👈 Abstract Model로 사용
    def __str__(self):
        return self.name
class RoomType(AbstractItem): # 👈 AbstractItem 상속 받음
    """Room Type Model Definition"""
    pass
class Amenity(AbstractItem): # 👈 AbstractItem 상속 받음
    """Amenity Model Definition"""
    pass
class Facility(AbstractItem): # 👈 AbstractItem 상속 받음
    """Facility Model Definition"""
    pass
class HouseRule(AbstractItem): # 👈 AbstractItem 상속 받음
    """HouseRule Model Definition"""
    pass 

2. verbose_name & verbose_name_plural

  • Admin Panel을 보면, Django에서 알아서 모든 Model 이름에 "s"를 붙여준 것을 볼 수 있어요. Django가 알아서 복수로 표현시켜 줍니다.
  • 다만, "verbose_name"과 "verbose_name_plural" 속성을 통해 이를 다르게 지정할 수 있어요!
    • verbose_name은 "지정한 값 + s"를 붙여줍니다.
    • verbose_name_plural은 "지정한 이름" 그대로 사용합니다.
class RoomType(AbstractItem):
    """Room Type Model Definition"""
    class Meta:
        verbose_name = "Room Type" # 👈 Room Types로 나타남
class Amenity(AbstractItem):
    """Amenity Model Definition"""
    class Meta:
        verbose_name_plural = "Amenities" # 👈 Amenities로 나타남
class Facility(AbstractItem):
    """Facility Model Definition"""
    class Meta:
        verbose_name_plural = "Facilities" # 👈 Facilities로 나타남
class HouseRule(AbstractItem):
    """HouseRule Model Definition"""
    class Meta:
        verbose_name = "House Rule" # 👈 House Rules로 나타남

3. ordering

  • ordering은 Model의 데이터(Object)들을 정렬하는데 사용해요!
    • 🔎 ordering = [정렬 기준 필드값]
class RoomType(AbstractItem):
    """Room Type Model Definition"""
    class Meta:
        verbose_name = "Room Type"
        ordering = [created] # 👈 생성시간 기준으로 정렬(부모 Model에 created 필드가 존재)
class Amenity(AbstractItem):
    """Amenity Model Definition"""
    class Meta:
        verbose_name_plural = "Amenities"
        ordering = [name] # 👈 알파벳 기준으로 정렬(부모 Model에 name 필드가 존재)

좋은 웹페이지 즐겨찾기