2014-09-21 22 views
5

Tôi đang cố gắng thay đổi thứ tự trường trong quản trị viên của một trường trong gói django (khung còn lại)Làm cách nào để đăng ký mô hình đã được đăng ký trong quản trị viên?

Tôi xác định quản trị viên mới nhưng gặp lỗi 'Mô hình đã đăng ký'. Chắc chắn phải có một cách để làm điều đó?

from rest_framework.authtoken.models import Token 
class AuthTokenAdmin(admin.ModelAdmin): 
    list_display = ('user', 'key',) 


admin.site.register(Token, AuthTokenAdmin) 

Trả lời

8

Lý do lỗi này xảy ra là, lớp Token đã được registered with an admin class like this:

from django.contrib import admin 
from rest_framework.authtoken.models import Token 


class TokenAdmin(admin.ModelAdmin): 
    list_display = ('key', 'user', 'created') 
    fields = ('user',) 
    ordering = ('-created',) 


admin.site.register(Token, TokenAdmin) 

Để thay đổi điều này, trước tiên bạn cần unregister việc đăng ký quản trị cũ chống lại giai cấp nhất định, và sau đó đăng ký một cái mới.

Hãy thử điều này:

admin.site.unregister(Token) #First unregister the old class 
admin.site.register(Token, AuthTokenAdmin) #Then register the new class 
+2

tôi kết thúc trong một số vòng dây: không có: 'admin.site.unregister (Token)' tôi 'Các mô hình Mã đã được đăng ký ' với tôi 'Mã thông báo mô hình không được đăng ký'. Tôi đang sử dụng bảng điều khiển django, nơi tôi đăng ký: 'rest_framework.authtoken.Token', – andi

+1

Xin chào @andi vấn đề của bạn có thể là thứ tự của các ứng dụng trong cài đặt 'INSTALLED_APPS'. Giữ các ứng dụng tùy chỉnh của bạn bên dưới các ứng dụng của bên thứ ba để 'unregister' được gọi trên một mô hình đã được đăng ký. – manu

0
if admin.site.is_registered(Model): # check if this model registered 
    admin.site.unregister(Model) # unregister it 

admin.site.register(NewModelClass) # register your custom Model 
Các vấn đề liên quan