Day 6 Django for KN

김의석 ·2024년 1월 30일

Django

목록 보기
6/39

Django for KN(Koinonia)

  • 해당 문서는 사귐의 교회 청소년부 출석부 프로젝트를 위한 Django 학습 내용과 개발 과정을 기록함

django.contrib.admin

# prject의 urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls)
]
  • 기본 경로이며 admin.site.urls는 from django.contrib import admin에서 처리하겠다는 의미, 주소 변경을 권고(URL reverse )

model class를 admin에 등록하기

# admin.py

from django.contrib import admin
from .models import Post

# 기본 등록법 
# admin.site.register(Post)

# 추천 등록법
@admin.register(Post)
class PostAdmin(admin.ModelAdmin)
  • 파이썬의 장식자 문법 이용, 대상을 wrapping하여 model을 admin에 등록.

model class에서 str구현

# models.py

from django.db import models

class Post(models.Model):
    message = models.TextField()
    is_public = models.BooleanField(default=False, verbose_name='공개여부')
    created_at = models.DateTimeField(auto_now_add=True) # auto_now_add : db에 data가 insert 될 때 시간이 자동으로 입력된다.(form에는 노출되지 않음) 
    updated_at = models.DateTimeField(auto_now=True) # auto_now: db에 data가 수정 될 때 시간이 자동으로 입력된다.(form에는 노출되지 않음) 

    def __str__(self):
     # return f"Custom Post Object ({self.id})"
     return self.message # instagram model에 작성 된 message를 작성 내용 그대로 post의 title로 사용
     
    def message_length(self): # 속성의 추가, 인자 없는 속성, 함수만 가능하다.
      return len(self.message) 
    
    message_length.short_description = '메세지 글자수' # 속성의 이름 변경
  • class로부터 나온 어떤 객체에 대해 문자열 표현이 필요할 때 = Java의 ToString과 동일.
  • def message_length(self)로 인자가 없는 속성, 함수의 추가가 가능하다.

속성정의

# admin.py

@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    list_display = ['id', 'message', 'message_length', 'is_public', 'created_at', 'updated_at']
    list_display_links = ['message']
    search_fields = ['message'] # admin에 search 창 생성 및 filter 기능 구현
    list_filter = ['created_at', 'is_public'] # admin에 created_at 기준으로 list 형식의 filter 기능 구현
    
    def message_length(self, post): # models.py가 아닌 admin.py에서 model custom할 수 있다.
        return len(post.message
  • list_display
    • 모델 리스트에 출력할 컬럼을 지정.
    • admin상에서 리스트 지정한 컬럼들을 확인할 수 있다.
  • list_display_links
    • 지정한 컬럼에 링크기능이 생성 됨
  • search_fileds
    • admin에 search 창 생성 및 filter 기능 구현
  • list_filters
    • admin에 created_at 기준으로 list 형식의 filter 기능 구현
profile
널리 이롭게

0개의 댓글