장고 관리자 목록 다대다 필드 - Admin list_display ManyToManyField > 장고 DJango

장고 DJango

How-to 장고 관리자 목록 다대다 필드 - Admin list_display ManyToManyField

페이지 정보

본문

장고 관리자 목록 다대다 필드 - Admin list_display ManyToManyField 


장고의 관리자 목록 항목에는 다대다 필드 = ManyToMany Field를 열거할 수 없는 것이 디폴트다. 


무시하고 다대다 필드명을 삽입하면 다음과 같은 에러메시지가 뜬다. 

에러 메시지 예) 

The value of 'list_display[1]' must not be a ManyToManyField. 

#list_display에서 2번째 항목은 ManyToManyField이므로 오류이다. 


관리자페이지에서 다대다 필드를 목록의 항목으로 사용하려면 필드명이 아니라 함수를 작성하고 그 함수명을 list_display에 삽입해야한다. 


** admin.py 파일 


class PostAdmin(admin.ModelAdmin):

    list_display  = ('category_list', 'title', 'content', 'created_at', 'updated_at') 

    list_filter   = ('updated_at', 'created_at',)

    search_fields = ('title', 'content')


    def category_list(self, Category): 

        return ', '.join(o.name for o in Category.categorys.all()) 

장고는? 장고(DJango)는 파이썬(python)으로 제작된 오픈 소스 풀 스택 웹프레임워크입니다.