HOWTO · Django

Django 모델의 메타 클래스

Django 모델에서 메타 클래스의 역할에 대해 알아보세요.

이 페이지의 내용

메타 데이터는 다른 데이터에 대한 정보를 제공하는 특정 데이터 집합을 나타냅니다. Django에서는 Django 모델을 사용하여 데이터베이스의 테이블과 해당 필드를 설계합니다. 모델 자체에 대한 데이터를 추가해야하는 경우Meta클래스를 사용합니다. 이 기사에서 Django 모델의Meta클래스에 대해 자세히 알아보십시오.

Django의Meta클래스

Meta클래스는 내부 클래스입니다. 즉, 다음과 같이 모델 내부에 정의됩니다.

from django.db import models


class MyModel(models.Model):
    ...

    class Meta:
        ...

Meta클래스는 권한, 데이터베이스 이름, 단 복수 이름, 추상화, 순서 지정 등과 같은 모델에 대한 다양한 사항을 정의하는 데 사용할 수 있습니다. Django 모델에Meta클래스를 추가하는 것은 전적으로 선택 사항입니다.

이 클래스에는 구성 할 수있는 많은 옵션도 제공됩니다. 다음은 일반적으로 사용되는 몇 가지 메타 옵션입니다. 여기에서 모든 메타 옵션을 탐색 할 수 있습니다.

장고 메타 옵션-초록

이 옵션은 모델이 추상적인지 여부를 정의하는 데 사용됩니다. 추상 클래스와 동일하게 작동합니다. 추상 클래스는 인스턴스화 할 수없고 확장 또는 상속 만 가능한 클래스입니다.

추상으로 설정된 모델은 상속 만 가능합니다. 공통 필드가있는 여러 모델이있는 경우이 옵션을 사용할 수 있습니다.

from django.db import models


class Human(models.Model):
    genders = (
        ("M", "Male"),
        ("F", "Female"),
        ("NB", "Non-binary"),
        ("T", "Transgender"),
        ("I", "Intersex"),
        ("O", "Other"),
        ("PNTS", "Prefer not to say"),
    )

    name = models.CharField(max_length=200)
    age = models.IntegerField(default=0)
    gender = models.CharField(max_length=50, choices=genders)

    class Meta:
        abstract = True  # Important


class Teacher(Human):
    subject = models.CharField(max_length=200)


class Student(Human):
    grade = models.IntegerField(default=0)

여기에서선생님및학생모델은Human모델 내부에 모든 필드가 있습니다. 데이터베이스 내에는Teacher및Student모델 만 생성됩니다.

Django 메타 옵션-db_table

이 옵션은 데이터베이스 내에서 테이블을 식별하는 데 사용해야하는 이름을 설정하는 데 사용됩니다. 예를 들어 다음과 같은 작업을 수행하면 데이터베이스에서 모델 이름이job이됩니다.

from django.db import models


class JobPosting(models.Model):
    class Meta:
        db_table = "job"

장고 메타 옵션-주문

이 옵션은 모델 필드 인 문자열 값 목록을 사용합니다. 모델 객체의 순서를 정의하는 데 사용됩니다. 이 모델의 개체가 검색되면이 순서대로 표시됩니다.

from django.db import models


class JobPosting(models.Model):
    dateTimeOfPosting = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ["-dateTimeOfPosting"]

위의 예에서 검색된 개체는dateTimeOfPosting필드를 기준으로 내림차순으로 정렬됩니다. (-접두사는 내림차순을 정의하는 데 사용됩니다.)

Django 메타 옵션-verbose_name

이 옵션은 사람이 읽을 수있는 모델의 단일 이름을 정의하는 데 사용되며 Django의 기본 명명 규칙을 덮어 씁니다. 이 이름은 관리자 패널 (/admin/)에도 반영됩니다.

from django.db import models


class JobPosting(models.Model):
    class Meta:
        verbose_name = "Job Posting"

장고 메타 옵션-Verbose_name_plural

이 옵션은 모델에 대해 사람이 읽을 수있는 복수형 이름을 정의하는 데 사용되며 다시 Django의 기본 명명 규칙을 덮어 씁니다. 이 이름은 관리자 패널 (/admin/)에도 반영됩니다.

from django.db import models


class JobPosting(models.Model):
    class Meta:
        verbose_name_plural = "Job Postings"