메서드 __str__ Django Admin Panel을 사용하여 설명

Django에서 모델을 생성하는 순간, 거의 본능적으로 모든 사람이 str 메서드를 포함하거나 포함하지 않을 수도 있지만 str 메서드를 설명하겠습니다.

str 메서드를 사용하면 개체를 문자열 표현으로 변환할 수 있습니다. 이 방법은 Django에서 모델을 생성할 때 주로 사용하는 dunder 방법이지만 다른 곳에서도 많이 사용됩니다.

던더 방법

–> 이중 밑줄로 시작하고 끝납니다.

->dunder는 "double under"의 줄임말입니다.

-> 또 다른 일반적인 dunder 방법은 init입니다.

str 메서드를 사용하지 않으면 변경 사항을 마이그레이션한 후 관리자 패널에서 개체를 반환하지만 이 개체는 친숙한 이름을 표시하지 않으므로 특히 생성된 개체가 많은 경우 개체를 관리할 때 어려움을 겪을 수 있습니다.

이 방법을 사용하면 문자열 표현이 관리자 패널에 표시됩니다. 이 문자열은 메서드에서 반환되도록 선택된 필드로 구성됩니다.

사용되는 방법의 예를 살펴보겠습니다.

간결함을 위해 이미 Django를 설정하고 Cards라는 앱과 모델을 만들었습니다.

Django의 초기 설정 방법과 모델 생성 방법을 알고 싶다면 이 게시물을 확인하십시오.

Chapter 1 – Django Setup – (How to create a Django Web App)

Chapter 2 – Django Basics – (How to access the admin panel and create models in Django)

str 메서드를 이해하고 싶다면 계속 읽으십시오.

str 방법 없이

아래 코드는 개념과 설명이라는 두 개의 CharField가 있는 Cards라는 모델을 보여줍니다.

Models.py


#path -> cards/models.py

from django.db import models


class Cards(models.Model):
    concept = models.CharField(max_length=75)
    description = models.CharField(max_length=75)



#baltlogs.com



Admin.py

Cards 모델을 가져와 등록했습니다.


#path -> cards/admin.py

from django.contrib import admin
from .models import Cards

admin.site.register(Cards)

#baltlogs.com



컴퓨터에서 따라하는 경우 다음 명령을 실행하여 마이그레이션을 수행하고 서버를 실행하십시오.



자격 증명을 사용하고 http://127.0.0.1:8000/admin/으로 이동하여 관리자 패널에 액세스합니다.

수퍼유저를 생성하고 관리자 패널에 액세스하는 방법을 모르는 경우 튜토리얼 시작 부분에 언급된 게시물을 참조하세요.

모델 이름(제 경우에는 카드)을 클릭합니다.



모델(카드)을 참조하여 생성된 모든 항목이 여기에 표시됩니다.

관리자 패널에 처음 액세스하는 경우 항목이 없습니다. 카드 추가(모델 이름)를 클릭하여 카드를 생성할 수 있습니다.

일부 항목을 만들고 저장합니다. 새로 생성된 항목이 표시되어야 합니다.

내 경우 총 카운트는 5개의 카드를 생성했다고 표시되지만 카드 오브젝트 옆의 카운트는 최대 12개입니다. 이미 많은 항목을 생성하고 삭제했기 때문입니다.

생성된 객체가 표시되는 방식을 살펴보십시오. 옆에 있는 숫자를 제외하고는 차이점이 없습니다. 그러나 어떤 객체가 어떤 객체인지 알 방법이 없습니다.

str 메서드를 포함하지 않았기 때문에 개체가 이런 방식으로 나타납니다.



str 방법으로

models.py에 str 메소드를 포함시키자.

Models.py


#path -> cards/models.py

from django.db import models


class Cards(models.Model):
    concept = models.CharField(max_length=75)
    description = models.CharField(max_length=75)

    def __str__(self):
        return self.concept



#baltlogs.com



파일을 저장하고 명령을 실행하여 마이그레이션을 수행하고 서버를 다시 실행하십시오.

관리자 패널로 이동 -> 카드(모델명)



개체가 표시되어야 하지만 이번에는 모델의 선택된 필드(제 경우에는 개념 필드)의 문자열 표현이 표시됩니다.

이 문자열 표현은 카드 개체(#)와 같은 이름이나 str 메서드가 포함되지 않은 경우 가끔 표시되는 개체의 메모리 주소를 갖는 대신 개체를 쉽게 식별할 수 있도록 합니다.

문자열 표현으로 선택되는 가장 일반적인 필드 중 일부는 이름 및 제목 필드입니다. 이러한 필드는 어떤 객체가 어떤 객체인지 알 수 있는 매우 좋은 방법입니다.

메모:

내 모델은 이중 's'가 있는 Cardss로 표시됩니다. 관리자 패널에서 모델 이름의 복수형을 자동으로 표시하기 때문입니다. 모델 카드의 이름을 지정하면 관리자 패널에 카드로 표시됩니다.

장고에 대해 자세히 알아보기:



Login/Registration Page with HTML,CSS,& JS Series - PART I

Navbar Styling + Logo using Bootstrap5 & Django

Django 3..2..1..Takeoff Book

Personal Website

좋은 웹페이지 즐겨찾기