2014-09-21 104 views
5

我想改變Django包(休息框架)中的字段的管理中的字段順序如何註冊已在管理員中註冊的模型?

我定義了一個新的adminmanager,但得到'Model Already Registered'錯誤。肯定有辦法做到這一點?

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


admin.site.register(Token, AuthTokenAdmin) 

回答

8

出現此錯誤的原因是,類Token已是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) 

要改變這一點,首先需要unregister對給定類的老管理員註冊,然後註冊新的那一個。

試試這個:

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

我在一些有線循環結束:無:'admin.site.unregister(令牌)'我'令牌已經被註冊 '與我的模型有「模型令牌未註冊」。我正在使用django儀表板,在那裏我註冊:'rest_framework.authtoken.Token', – andi 2015-05-28 12:18:42

+1

嗨@andi您的問題可能是'INSTALLED_APPS'設置中應用程序的順序。將您的自定義應用保持在第三方應用下方,以便在已註冊的模型上調用「註銷」。 – manu 2016-01-28 22:06:10

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