2014-09-21 11 views
5

Próbuję zmienić kolejność pól w administratorze pola w pakiecie django (reszta ramy)Jak zarejestrować model, który jest już zarejestrowany w adminie?

Definiuję nowy menedżer administracyjny, ale otrzymuję błąd "Model już zarejestrowany". Z pewnością musi być jakiś sposób na zrobienie tego?

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


admin.site.register(Token, AuthTokenAdmin) 

Odpowiedz

8

Powodem wystąpienia tego błędu jest klasa Token został już 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) 

Aby to zmienić, trzeba najpierw unregister stary Administrator Rejestracja przeciwko danej klasie, a następnie zarejestrować nowy.

Spróbuj tego:

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

skończę w jakimś przewodowej pętli: bez: 'admin.site.unregister (token)' 'Mam model Token jest już zarejestrowany ' z I got 'Modelowy token nie jest zarejestrowany. Korzystam z pulpitu django, gdzie rejestruję: "reszta_tekstu.authtoken.Token", – andi

+1

Hi @i twój problem może być kolejnością aplikacji w ustawieniu 'INSTALLED_APPS'. Zachowaj niestandardowe aplikacje pod aplikacjami innych firm, aby wywoływać funkcję "wyrejestruj" na już zarejestrowanym modelu. – 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