본문 바로가기

Python/Python_Django

[Python_Django] 관리자 계정에서 테이블 관리하기

장고에서는 저번에 언급했듯이 관리자 기능을 제공한다.

이 관리자 기능에서 CRUD기능이 구현 되어있어서

단 코드 몇줄로 테이블을 쉽게 관리 할 수 있게 된다.

CRUD
Create(생성), Read(읽기), Update(갱신), Delete(삭제) 전체를 뜻하는 말이다.
즉, 사용자 인터페이스가 기본적으로 갖춰야 할 것들을 의미한다.

관리자 계정 페이지를 수정해야 되니까 admin.py 파일에서 수정한다.

파일에서 클래스를 불러와야 하기때문에 같은 폴더에 있는 models에서 Boards를 import 해준다.

board > admin.py
from django.contrib import admin
from .models import Boards

admin.site.register(Boards)
# Register your models here.

그리고 admin.site.register로 테이블을 관리자 계정에 띄울수 있다.

하지만 저렇게만 뜬다면 게시물이 많아졌을때 저게 무슨 게시물인지 모르게 된다.

그래서 데코레이터를 이용해 클래스를 꾸며준다.

board > admin.py
from django.contrib import admin
from .models import Boards

@admin.register(Boards)
class Boardsadmin(admin.ModelAdmin):
    list_display = (
        'id', 
        'title',
        'Thumbnail', 
        'view_count',
        'created_at', 
        'updated_at'
    )
    search_fields = (
        'title',
    )
    list_display_links = (
        'id',
        'title',
    )
    list_filter = (
        'created_at',
    )

Boards를 더 가독성있게 나타내기 위한 클래스 이니 이름은 BoardsAdmin으로 짓고

list_display는 Boards 클래스에서 원하는 값(속성, 애트리뷰트)을 관리자 계정에 띄어주게 해준다.

search_fields는 검색 기능을 만드는 것인데, 원하는 값을 넣으면 그 값으로 검색이 가능해진다.

list_display_links는 수정 탭으로 가는 링크를 원하는 값에다가 설정 할 수 있다.(기본적으로 id에 링크 되어있다.)

list_filter는 원하는 값으로 필터링 할 수 있다.

이제 id나 title에 걸려있는 링크로 가면 그 값을 수정 할 수 있게 된다.