본문 바로가기

WEB

[Django] models.py 에서 Meta, __str__ 사용하기

전 게시물에서 장고의 models.py에 class를 작성하였다.

이번 게시물에서는 class의 Meta, __str__을 알아보자

 

전 게시물

https://e-you.tistory.com/354

 

[Django] 장고 sqlite3 사용하기

python에서 제공해주는 sqlite3을 사용하여 데이터를 저장해보자. sqlite는 서버가 아닌 응용프로그램에 넣어 사용하는 비교적 가벼운 데이터베이스이다. 1. 프로젝트를 생성한 뒤 app을 생성해준다. a

e-you.tistory.com

 


from django.db import models

# Create your models here.
class BlogDB(models.Model):
    title = models.CharField(max_length=20)
    content = models.CharField(max_length=100)

아무런 조건도 주지 않았을때이다.

 


 

 

Meta


필드 속성 외에 필요한 파라미터가 있으면 Meta 내부 클래스로 정의한다.

별칭, 복수 별칭, 테이블명, 정렬방법등을 정의

 

 

from django.db import models

# Create your models here.
class BlogDB(models.Model):
    title = models.CharField(max_length=20)
    content = models.CharField(max_length=100)

    class Meta:
        verbose_name = '블로그 게시글'
        verbose_name_plural = '블로그 게시글 모음'
        ordering = ('title',)

 

 

[verbose_name]

사용자가 읽기 쉬운 모델 객체의 이름으로 관리자 화면 등에서 표시된다. 영어를 기준으로 단수형이다.

 

[verbose_name_plural]

사용자가 읽기 쉬운 모델 객체의 이름으로 관리자 화면 등에서 표시되는 것은 동일하나 영어를 기준으로 복수형이다.

한국어에서는 굳이 단수와 복수를 구별해 사용하지 않으므로 verbose_name과 동일하게 쓸 수 있다.

verbose_name_plural 옵션을 지정하지 않으면 verbose_name에 s를 붙인다.

 

[ordering]

모델의 정렬 순서를 지정하며 여러 개를 지정할 경우 필드 이름을 리스트로 나열한다. 기본값은 오름차순으로 정렬하고 -를 붙이면 내림차순으로 정렬한다.

 

 

 

 

 

 

__str__


해당 클래스로 만들어진 인스턴트 자체를 출력할 때, 문자열로 설명해주기 위한 메서드이다.

 

 

 

 

[ __str__을 사용하지 않았을 때 ]

change blog db 아래 글자가 인스턴스 자체로 보이는 모습을 볼 수 있다.

 

 

 

datas = BlogDB.objects.all()을 사용하여 datas를 출력해보자.

인스턴스 자체로 표현되는 것을 볼 수 있다.

 

 


 

 

[ __str__을 사용하였을 때 ]

from django.db import models

# Create your models here.
class BlogDB(models.Model):
    title = models.CharField(max_length=20)
    content = models.CharField(max_length=100)
    
    def __str__(self):
        return self.title

 

change blog db 아래 글자가 title로 보이는 모습을 볼 수 있다.

 

 

 

datas = BlogDB.objects.all()을 사용하여 datas를 출력해보자.

인스턴스 자체가 아닌 문자열로 표현되는 것을 볼 수 있다.

'WEB' 카테고리의 다른 글

[spring boot] gitignore DB 정보 제외하기  (0) 2022.03.12
[Django] ORM  (0) 2022.01.22
[Django] 장고 admin에 앱 모델 등록하기  (0) 2022.01.22
[Django] 장고 admin 페이지 사용하기  (0) 2022.01.22
[Django] 장고 sqlite3 사용하기  (0) 2022.01.22