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"