繁体   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