以下是Django中的模型:
class Member(models.Model):
user = models.OneToOneField(User)
moredata = models.CharField('More data', max_length=255)
我想将所有用户字段放在Django管理员中该模型的编辑/创建页面中。所以我这样做了:
class UserInline(admin.StackedInline):
model = User
class MemberAdmin(admin.ModelAdmin):
inlines = [
UserInline,
]
admin.site.register(Member, MemberAdmin)
但是Django说User上没有外键,这是完全正确的。有办法解决这个问题吗?
如果我不使用admin类,我得到的只是一个用户列表。
理想情况下,我希望User
类型对管理员不可见,并让他们只创建和编辑派生的用户类型。
我应该扩展实际的User
类型而不是OneToOne关系吗?
答案 0 :(得分:1)
正如我们在聊天中讨论的那样,内置的User对象旨在用于管理站点。但在你的情况下,它对你的模型来说是无关紧要的,只会增加局限性和复杂性。
在这种情况下,最好的方法是使用您自己的模型作为独立的用户类,并使用内置的用户管理员(或根本不使用)。为此,您需要继承AbstractBaseUser并按照此处的说明进行操作:
https://docs.djangoproject.com/en/dev/topics/auth/customizing/#specifying-a-custom-user-model
它非常详细,如果你遇到任何麻烦,请回到这里,有人肯定会帮助你