메타 데이터는 다른 데이터에 대한 정보를 제공하는 특정 데이터 집합을 나타냅니다.

Django에서는 Django 모델을 사용하여 데이터베이스의 테이블과 해당 필드를 설계합니다.

 

모델 자체에 대한 데이터를 추가해야하는 경우Meta클래스를 사용합니다.

이 기사에서 Django 모델의Meta클래스에 대해 자세히 알아보십시오.


Django의 Meta클래스

Meta클래스는 inner 클래스입니다.

즉, 다음과 같이 모델 내부에 정의됩니다.

from django.db import models

class MyModel(models.Model):
    ...
    class Meta:
        ...

Meta클래스는 권한, 데이터베이스 이름, 단 복수 이름, 추상화, 순서 지정 등과 같은

모델에 대한 다양한 사항을 정의하는 데 사용할 수 있습니다.

 

Django 모델에Meta클래스를 추가하는 것은 전적으로 선택 사항입니다.

이 클래스에는 구성 할 수있는 많은 옵션도 제공됩니다.

다음은 일반적으로 사용되는 몇 가지 메타 옵션입니다. 여기에서 모든 메타 옵션을 탐색 할 수 있습니다.


1. Django 메타 옵션 - Abstract

이 옵션은 모델이 추상적인지 여부를 정의하는 데 사용됩니다. 추상 클래스와 동일하게 작동합니다.

 

추상 클래스는 인스턴스화 할 수없고 확장 또는 상속 만 가능한 클래스입니다.

추상으로 설정된 모델은 상속만 가능합니다.

공통 필드가있는 여러 모델이있는 경우이 옵션을 사용할 수 있습니다.

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 모델 만 생성됩니다.


2. Django 메타 옵션 - db_table

이 옵션은 데이터베이스 내에서

테이블을 식별하는 데 사용해야하는 이름을 설정하는 데 사용됩니다.

예를 들어 다음과 같은 작업을 수행하면 데이터베이스에서 모델 이름이 job이됩니다.

from django.db import models

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

 


3. Django 메타 옵션 - Ordering

이 옵션은 모델 필드 인 문자열 값 목록을 사용합니다. 모델 객체의 순서를 정의하는 데 사용됩니다.

이 모델의 개체가 검색되면이 순서대로 표시됩니다.

from django.db import models

class JobPosting(models.Model):
    dateTimeOfPosting = models.DateTimeField(auto_now_add = True)
    
    
    class Meta:
        ordering = ["-dateTimeOfPosting"]

위의 예에서 검색된 개체는dateTimeOfPosting필드를 기준으로 내림차순으로 정렬됩니다.

(-접두사는 내림차순을 정의하는 데 사용됩니다.)


4. Django 메타 옵션 - verbose_name

이 옵션은 사람이 읽을 수있는 모델의 단일 이름을 정의하는 데 사용되며

Django의 기본 명명 규칙을 덮어 씁니다.

이 이름은 관리자 패널 (/admin/)에도 반영됩니다.

from django.db import models

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

 

5. Django 메타 옵션 - Verbose name plural

이 옵션은 모델에 대해 사람이 읽을 수있는 복수형 이름을 정의하는 데 사용되며

다시 Django의 기본 명명 규칙을 덮어 씁니다. 이 이름은 관리자 패널 (/admin/)에도 반영됩니다.

from django.db import models

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

 


출처

https://www.delftstack.com/howto/django/class-meta-in-django/

 

+ Recent posts