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 타입으로 일반 텍스트를 입력할 수 있습니다.

    데이터 추가

     

     

    Json 형태로 저장된 결과

    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]))

     

     

    visualizing 예시

     

    Reference

    https://django-jsonform.readthedocs.io/en/latest/

     

    예시코드

    https://github.com/NGG-kang/tistory/tree/main/djang-jsonform