Ho visto un sacco di domande il contrario, che hanno qualcosa lungo le seguenti:In Django amministrazione, includono auth.User come un inline
class UserProfileInline(admin.StackedInline):
model = UserProfile
can_delete = False
verbose_name_plural = 'profile'
class NewUserAdmin(UserAdmin):
inlines = (UserProfileInline,)
admin.site.unregister(User)
admin.site.register(User, NewUserAdmin)
Quello che voglio fare è il contrario, ma Non riesco a vederlo funzionare. Ecco il codice che ho che non funziona.
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from myapp.models import SpecialUserType
class UserInline(admin.StackedInline):
model = User
can_delete = False
class IncludeUserAdmin(admin.ModelAdmin):
inlines = (UserInline,)
admin.register(SpecialUserType, IncludeUserAdmin)
Come posso fare questo lavoro in modo che User
è una linea in Admin SpecialUserType
?
L'errore che sto ricevendo è:
<class 'django.contrib.auth.models.User'> has no ForeignKey to <class 'students.models.SpecialUserType'>
Questo ha senso, perché il OneToOneField
è ospitato nel modello SpecialUserType
, ovviamente, e non in User
. Ma come posso farlo invertire su OneToOneField
?
(so che questo potrebbe sembrare una cosa insolita da fare, ma c'è una buona ragione che voglio installare l'amministratore in questo modo e non il contrario.)
Quale versione di Django stai usando? – sepulchered
Non potrebbe funzionare per la sottoclasse del modello User per aggiungerlo alla relazione mancante? – Ambroise