Django
django-jsonform을 사용한 django admin 활용
친구들안녕
2024. 7. 21. 18:54
목차
서론
본문은 django-jsonform을 사용하여, 어드민 페이지에 쉽고(그나마), 간단히 사용한 예시를 작성하였습니다.
본론
라이브러리 설치 및 settings에 추가
pip install django-jsonform == 2.22.0
INSTALLED_APPS = [
...
"django_jsonform",
]
JSONField 사용하여 model 추가
json 타입을 지정하여, 원하는 dict 형태로 생성이 가능합니다.
from django.db import models
from django_jsonform.models.fields import JSONField
class AbstractModel(models.Model):
QUERIES_SCHEMA = {
"type": "list",
"items": {
"type": "dict",
"keys": {
"type": {"type": "string", "choices": ["choice1", "choice2"]},
"name": {"type": "string"},
},
},
}
queries = JSONField(schema=QUERIES_SCHEMA)
createdAt = models.DateTimeField(null=True, auto_now_add=True)
class Meta:
abstract = True
Admin 페이지 사용 예시
choice 타입으로, choice 내용을 정할 수 있고,
String 타입으로 일반 텍스트를 입력할 수 있습니다.
Admin 페이지 visualizing
간단하게 Admin을 수정하여, 조금 더 보기 쉽게 비주얼라이징도 가능합니다.
from django.contrib import admin
from django.utils.safestring import mark_safe
class AbstractModelAdmin(admin.ModelAdmin):
list_display = ["queries_visualizing", "createdAt"]
# list_display = ["queries", "createdAt"]
def queries_visualizing(self, obj):
return mark_safe("<br/>".join([f"{query["type"]} / {query["name"]}" for query in obj.queries]))
Reference
https://django-jsonform.readthedocs.io/en/latest/
예시코드
https://github.com/NGG-kang/tistory/tree/main/djang-jsonform