2010-03-24 19 views
5

Tôi muốn thay đổi quản trị viên cho một nhóm, vì vậy nó sẽ hiển thị số lượng người dùng có trong một nhóm nhất định. Tôi muốn hiển thị điều này trong chế độ xem hiển thị tất cả các nhóm, nhóm trước khi bạn nhập quản trị viên cho một nhóm nhất định. Có thể không? Tôi đang nói cả về cách thay đổi quản trị viên cho một nhóm và cách thêm chức năng vào list_display.django: hiển thị số người dùng nhóm đếm trong quản trị

Trả lời

8

Trước tiên, bạn cần nhập và phân lớp GroupAdmin từ django.contrib.auth.admin. Trong lớp con của bạn, hãy xác định phương thức user_count. Sau đó, hủy đăng ký mô hình Nhóm hiện tại khỏi quản trị viên và đăng ký lại mô hình mới.

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

Hài hước, tôi đã có GroupAdmin của riêng mình, chỉ cần quên rằng tôi đã làm điều gì đó (bổ sung người dùng dễ dàng hơn, vì bạn không thể thêm người dùng từ quản trị viên nhóm mặc định). Đã lâu lắm rồi, tôi đã quên mất điều đó .. Cảm ơn rất nhiều vì sự giúp đỡ của bạn :-) – gruszczy

+0

Ok, một trường xuất hiện, nhưng nó luôn luôn là None và hàm user_count không được gọi. Bất kỳ ý tưởng nào, tại sao điều này lại xảy ra? – gruszczy

+0

Ồ, nó phải là obj.user_set.count(), chứ không phải self.user_set.count(). Bây giờ nó hoạt động :-) – gruszczy