1. Django Tutorial(Airbnb) - Meta Class


🌈 Meta Class


🔥 abstract


🔥 verbose_name & verbose_name_plural


🔥 ordering


1. abstract

  • Meta Classの抽象はDefaultが「abstract=false」であり、「abstract=True」であればAbstractモデルを使用することができる.実際に存在するDBではなく、他のモデルからテーブルを継承して作成するために使用します.
  • 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にはすべてのモデル名に「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

  • モデル内のデータ(オブジェクト)をソートするために注文!
  • 🔎 ソート=「ソート基準フィールド値」
  • 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 필드가 존재)