2010-02-16 41 views

Trả lời

71

cuối cùng tôi đã làm như thế này trong tập tin admin.py tôi:

from django.contrib.auth.admin import UserAdmin 
from django.contrib.auth.models import User 

UserAdmin.list_display = ('email', 'first_name', 'last_name', 'is_active', 'date_joined', 'is_staff') 

admin.site.unregister(User) 
admin.site.register(User, UserAdmin) 
+8

Chúng tôi cũng có thể mở rộng UserAdmin thay vì tự động sửa đổi nó! – Natim

+4

Để làm rõ, điều này sẽ được thêm vào tệp admin.py cấp cao nhất của trang web của bạn. –

+1

Tôi có thể hỏi ý bạn là gì bằng cấp cao nhất không? –

-3

Giả sử rằng lớp người sử dụng của bạn là User và trường ngày đăng ký của bạn là , đây là những gì bạn cần phải thêm vào của bạn admin.py

class UserAdmin(admin.ModelAdmin): 
    list_display = ('subscription_date',) 

admin.site.register(User, UserAdmin) 
+0

này có thể làm việc ngay cả với auth.User buildin? – Natim

+5

Điều này sẽ được kế thừa từ UserAdmin được tích hợp sẵn, nếu không bạn sẽ mất tất cả các tùy chỉnh còn lại. Và bạn phải hủy đăng ký đăng ký tích hợp; Câu trả lời của Natim có mã đúng. –

13

Một cách khác để làm điều này là mở rộng các lớp UserAdmin.

Bạn cũng có thể tạo một hàm để đưa vào list_display

from django.contrib.auth.admin import UserAdmin 
from django.contrib.auth.models import User 

class CustomUserAdmin(UserAdmin): 
    def __init__(self, *args, **kwargs): 
     super(UserAdmin,self).__init__(*args, **kwargs) 
     UserAdmin.list_display = list(UserAdmin.list_display) + ['date_joined', 'some_function'] 

    # Function to count objects of each user from another Model (where user is FK) 
    def some_function(self, obj): 
     return obj.another_model_set.count() 


admin.site.unregister(User) 
admin.site.register(User, CustomUserAdmin) 
+0

Tôi cũng có thể làm như sau (không có '__init__') hoặc có vấn đề với nó không ? 'class CustomUserAdmin (UserAdmin): list_display = list (UserAdmin.list_display) + ['date_joined']' – jdm

Các vấn đề liên quan