장고 admin을 통한 데이터 관리
파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 강의를 듣고 정리한 글입니다.
- 장고는 기본적인 CRUD를 지원하는 웹UI를 제공한다. 이를 admin이라고 하며 모델 등록을 통해 사용할 수 있다.
- CMS로 활용할 정도는 아니며 서비스 초기에 관리도구로 사용하기에 좋다.
- 관리도구를 만들 시간을 줄이고 엔드유저 서비스에 집중할 수 있게 한다.
모델 클래스를 admin에 등록하기
# app/admin.py
from django.contrib import admin
from .models import Post # 등록할 모델 클래스 임포트
@admin.register(Post) # 모델을 등록하는 wrapper함수
class PostAdmin(admin.ModelAdmin):
pass
모델 클래스에 __str__
을 구현
위에서 정의한 Admin 클래스에 list_display를 지정해주지 않으면 기본적으로 객체.__str__()
의 리턴값을 출력한다. 따라서 __str__
를 정의한다.
# app/models.py
from django.db import models
class Post(models.Model):
message = models.TextField()
is_publish = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.message
admin의 다양한 속성 정의
- list_display : 모델 리스트에 출력할 컬럼을 지정한다.
- list_display_links : list_display에 지정된 이름 중 detail 링크를 걸 속성 리스트
- search_field : admin 내 검색 UI를 통해 DB를 통한 where 쿼리 대상 필드 리스트
- list_filter : 지정 필드 값으로 필터링 옵션 제공
추가로 message_length와 같이 함수를 정의해서 필드처럼 사용이 가능하다. list_display에 추가해주었다. 또한 message_length.short_description
코드를 작성해서 화면에서 보이는 출력을 바꿀 수도 있다.
# app/admin.py
from django.contrib import admin
from .models import Post
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
list_display = ['pk', 'message', 'message_length', 'is_publish', 'created_at', 'updated_at']
list_display_links = ['message']
search_fields = ['message']
list_filter = ['is_publish']
def message_length(self, post):
return len(post.message)
message_length.short_description = "메시지 길이"
Author And Source
이 문제에 관하여(장고 admin을 통한 데이터 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@joje/장고-admin을-통한-데이터-관리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)