2010-03-24 1 views
5

그룹에 대한 관리자를 변경하고 싶으므로 특정 그룹에 얼마나 많은 사용자가 있는지 표시 할 수 있습니다. 모든 그룹을 보여주는보기에 이것을 표시하고 싶습니다. 특정 그룹에 대해 admin을 입력하기 전에 하나를 표시하고 싶습니다. 가능한가? 나는 그룹에 대한 관리자를 변경하는 방법과 기능을 list_display에 추가하는 방법에 대해 이야기하고 있습니다.django : 그룹 사용자 수를 관리자에게 표시

답변

8

먼저 GroupAdmin을 가져오고 django.contrib.auth.admin에서 하위 클래스로 가져와야합니다. 하위 클래스에서 user_count 메소드를 정의하십시오. 그런 다음 기존 그룹 모델을 admin에서 등록 취소하고 새 그룹을 다시 등록하십시오. (당신이 기본 그룹 관리에서 사용자를 추가 할 수 없기 때문에, 쉽게 사용자 추가)

from django.contrib.auth.admin import GroupAdmin 
from django.contrib.auth.models import Group 

class GroupAdminWithCount(GroupAdmin): 
    def user_count(self, obj): 
     return obj.user_set.count() 

    list_display = GroupAdmin.list_display + ('user_count',) 

admin.site.unregister(Group) 
admin.site.register(Group, GroupAdminWithCount) 
+0

재미, 나는 이미 내가 그 뭔가를하고 있던 것을, 내 자신의 GroupAdmin, 그냥 잊고있다. 그것은 너무 오래 전, 그저 잊어 버렸습니다. .. 도움을 많이 주셔서 감사합니다 :-) – gruszczy

+0

좋아, 필드가 나타나지만 항상 없음이며 user_count 함수가 호출되지 않습니다. 어떤 생각, 왜 이런 일이 일어나는 걸까요? – gruszczy

+0

Ohk, self.user_set.count()보다는 obj.user_set.count() 여야합니다. 이제 작동합니다 :-) – gruszczy