2014-09-21 28 views
5

Django paketindeki bir alanın yöneticisinde alan sırasını değiştirmeye çalışıyorum (dinlenme çerçevesi)Yönetici olarak kayıtlı bir modeli nasıl kaydederim?

Yeni bir yönetici yöneticisi tanımlıyorum ancak 'Zaten Kayıtlı Model' Hatası aldım. Elbette bunu yapmanın bir yolu olmalı? Verilen sınıfa karşı eski yönetici kayıt unregister için öncelikle ihtiyaç

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) 

Bunu değiştirmek için, sonra da kayıt: Bu hata ortaya

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


admin.site.register(Token, AuthTokenAdmin) 

cevap

8

nedeni sınıfı Token zaten registered with an admin class like this olmuştur olduğunu yeni olan.

bu deneyin:

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

Bazı kablolu döngüde sona: olmadan: 'admin.site.unregister (Token)' ı got 'Kod önceden I' kayıtlı modeli var “Model Token kayıtlı değil”. Kayıt olduğum django kontrol panelini kullanıyorum: 'rest_framework.authtoken.Token', – andi

+1

Merhaba @andi probleminiz, 'INSTALLED_APPS' ayarındaki uygulamaların sırası olabilir. Özel uygulamalarınızı üçüncü parti uygulamaların altında saklayın, böylece zaten kayıtlı olan bir modele 'unregister' denir. – 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 
İlgili konular