Django 모델의 메타 클래스

Vaibhav Vaibhav 2021년6월29일
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모델 내부에 모든 필드가 있습니다. 데이터베이스 내에는TeacherStudent모델 만 생성됩니다.

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"
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

관련 문장 - Django Model