[英]In Django admin, include auth.User as an 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)
我想做的是反過來,但我看不到讓它發揮作用。 這是我的代碼不起作用。
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)
我如何使這項工作,以便User
在SpecialUserType
的管理員內聯?
我得到的錯誤是:
<class 'django.contrib.auth.models.User'> has no ForeignKey to <class 'students.models.SpecialUserType'>
這是有道理的,因為OneToOneField
顯然位於SpecialUserType
模型中,顯然不在User
。 但是我怎樣才能讓它在OneToOneField
上反轉?
(我知道這可能看起來很不尋常,但我有充分的理由想要以這種方式設置管理員,而不是相反。)
不幸的是,它無法完成。 我在自己面前遇到過這個問題幾次。
正如錯誤消息所示,內聯模型必須具有指向主模型的ForeignKey(或OneToOneField)。
正如其他人提到的,我發現子類用戶對我很有幫助:
class UserProfile(User):
user = OneToOneField(User, parent_link=True)
# more fields, etc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.