簡體   English   中英

在Django admin中,包含auth.User作為內聯

[英]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)

我如何使這項工作,以便UserSpecialUserType的管理員內聯?

我得到的錯誤是:

<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM