Wagtail Custom Field와 Panel을 작성하는 방법에 대해서 기술해보려고 한다.
https://www.accordbox.com/blog/wagtail-tutorials-8-add-markdown-support/
(참고 사이트)
사실 일반 목적의 필드를 커스텀 하고 싶을 때는 이후에 사용할 Widget을 커스텀 하는 방법을 사용하면 되지만 Field하고 Panel도 언젠가는 사용할 일이 올 것으로 생각하고 정리해본다.
from django.db.models import TextField
from django.utils.translation import ugettext_lazy as _
from wagtail.admin.edit_handlers import FieldPanel
class MarkdownField(TextField):
def __init__(self, **kwargs):
super(MarkdownField, self).__init__(**kwargs)
class MarkdownPanel(FieldPanel):
def __init__(self, field_name, classname="", widget=None, **kwargs):
super(MarkdownPanel, self).__init__(
field_name,
classname=classname,
widget=widget,
**kwargs
)
if self.classname:
if 'markdown' not in self.classname:
self.classname += "markdown"
else:
self.classname = "markdown"
방법은 간단하다 위에 코드는 사이트에 나온 그대로 가져온 것이다. Django의 TextField를 상속받아서 재정의 해준 것이다. Panel로 마찬가지이다. 다만 panel에서 widget이나 classname을 정의해서 custom 할 수 있다. 이후에 소개할 custom widget을 custom panel에 적용해서 사용할 수도 있겠다.
'Back-End > Wagtail, Django' 카테고리의 다른 글
Wagtail Video (0) | 2021.10.01 |
---|---|
Wagtail Custom Widget (+Model) (0) | 2021.09.29 |
Wagtail hooks로 RichTextField에 구글 폰트 적용 (0) | 2021.09.19 |
Wagtail Custom Block Field 만들기 (0) | 2021.09.19 |
Wagtail 중첩 StreamField (0) | 2021.09.01 |