반응형
models.py의 내용이 점점 길어짐에 따라 수정할때 엄청난 스크롤 압박을 받게되어 효율적으로 사용하는법을 찾아서 적용하였다.
간단히 말하자면 기존 models.py에 있는 각 class 를 파일별로 나누는 것이다.
예를 들어 models.py에 APage BPage CPage 라는 class (page)와 DBlock EBlock FBlock 라는 class(block)이 있다면
app/
models/
__init__.py
a_page.py
b_page.py
c_page.py
blocks.py
이렇게 총 5개의 파일을 만들어준다.
# __init__.py
from .a_page import A
from .b_page import B
from .c_page import C
from .blocks import D,E,F
# A_page.py example
from django.db import models
from wagtail.models import Page
from wagtail.admin.panels import FieldPanel
class APage(Page):
summary = models.TextField(blank=True, max_length=500)
content_panels = Page.content_panels + [
FieldPanel('summary', heading="요약"),
]
# blocks.py example
from wagtail.blocks import StructBlock, BooleanBlock
class DBlock(StructBlock):
D1 = BooleanBlock(required=False, default=False)
D2 = BooleanBlock(required=False, default=False)
class EBlock(StructBlock):
E1 = BooleanBlock(required=False, default=False)
E2 = BooleanBlock(required=False, default=False)
class FBlock(StructBlock):
F1 = BooleanBlock(required=False, default=False)
F2 = BooleanBlock(required=False, default=False)
이런식으로 page class와 blocks를 구분해서 만들어서 편리하게 관리를 할 수 있다.
'Code > Django' 카테고리의 다른 글
wagtail 첫번째 앱과 모델 만들기. (0) | 2024.08.21 |
---|---|
django wagtail summernote TypeError: clean() got an unexpected keyword argument 'styles' (0) | 2024.08.01 |
django wagtail에서 ajax 구현 방식 (0) | 2024.07.31 |
wagtail MEDIA_URL 연결 (0) | 2024.07.29 |
url view 추가하기 CBV ( ListView) (0) | 2024.07.01 |