장고 어드민 불필요 모델 숨기기

hyuckhoon.ko·2021년 6월 18일
0

What I learned in first year

목록 보기
81/146

1. 문제의 발단

배너 관리에서 배너 링크 관련 object를 이미 생성할 수 있다.
단지, admin.register를 했다는 이유로
장고의 관리자 화면 좌측에 불필요한 모델 정보가 보이기 시작했다.




2. 해결 코드

class BannerLinkAdmin(admin.ModelAdmin):
    models = models.BannerLink

   def get_model_perms(self, request):
        """
        배너 링크 모델을 배너 어드민에서 사용하니 등록은 해야하나, 어드민 메인 메뉴에는 노출시키고 싶지 않음
        """
        return {}


admin.site.register(models.BannerLink, BannerLinkAdmin)


class BannerAdmin(admin.ModelAdmin):
    """배너 관리 탭"""

    list_display = ("get_banner_image_tag", "priority", "link",)
    list_editable = ("priority",)
    ordering = ("priority",)

    def get_banner_image_tag(self, instance):
        return mark_safe(
            f'<img src="{instance.image.url}" style="width: 100px;" />'
        )

    get_banner_image_tag.short_description = "배너 사진"
    
    
    #  배너 어드민 등록
    admin.site.register(models.Banner, BannerAdmin)



3. 최종 모습


출처: https://stackoverflow.com/questions/2431727/django-admin-hide-a-model

0개의 댓글