반응형
본 글은 Holix의 "리액트와 함께 장고 시작하기 Complete" 강의를 듣고 작성한 일지입니다.
오늘은 장고 admin 페이지와 관련하여 어떤 기능이 있는지 전반적으로 살펴보려고 합니다. 이전에 장고를 독학하며 야매(?)로 다뤘던 것 같은데 최근에 강의를 듣게 되어 다시 한 번 정리할 계획입니다.
# models.py
from django.db import models
# Create your models here.
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
is_public = models.BooleanField(default=False, verbose_name='공개여부') # verbose_name을 설정하면 admin 페이지에 그대로 표현됨
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
# Java의 toString 역할
def __str__(self):
# return f'Custom Post object ({self.id})'
return self.content
# admin.py
from django.contrib import admin
from .models import Post
# Register your models here.
# 첫 번째 방법
# admin.site.register(Post)
# 두 번째 방법: 장식자 문법(Wrapping)
@admin.register(Post)
class PostAdmin(admin.ModelAdmin): # list_display, search_fields 등은 ModelAdmin의 옵션들
list_display = ['id', 'content', 'content_length', 'is_public', 'created_at', 'updated_at'] # pk는 id의 alias
list_display_links = ['content']
list_filter = ['created_at', 'is_public']
search_fields = ['content'] # 검색창(메시지 내용을 검색)
# 사용자 지정 함수
def content_length(self, post): # post 객체가 넘어옴
return len(post.content)
위에서 search_fields = ['content'] 에서 내용 안에 특정 단어를 검색하는 기능을 추가했습니다. 이것이 어떻게 내부에서 작동되는지 살펴보면 아래와 같습니다.
python manage.py shell
from blog1.models import Post
qs = Post.objects.all().filter(content__icontains='다시') # '다시'를 포함하는지 확인
print(qs.query)
sql문에서 특정 단어를 포함하는지 확인하려면 LIKE %특정 단어% 라고 표현하면 됩니다.
장고의 ModelAdmin 클래스에는 더 많은 기능들이 있기 때문에 이외의 내용은 공식 문서를 참고하시면 될 것 같습니다.
728x90
반응형
'문돌이 존버 > Django 스터디' 카테고리의 다른 글
장고(Django) 모델을 통한 조회(기초) (0) | 2021.08.07 |
---|---|
장고(Django) media 파일 다루기 (0) | 2021.08.06 |
장고 크론탭(django crontab) 사용해보기 (0) | 2021.02.20 |
DRF 게시글 생성 및 조회수 중복 방지(쿠키 설정) (0) | 2021.02.16 |
DRF user 회원가입 UI 아이디, 이메일 중복 검사 (0) | 2021.02.13 |