1

这是 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 上的 Member 没有外键,这是完全正确的。有没有办法来解决这个问题?

如果我不使用管理类,我得到的只是一个可供选择的用户列表。

理想情况下,我希望该User类型对管理员不可见,并让他们只创建和编辑派生的用户类型。

我应该扩展实际User类型而不是 OneToOne 关系吗?

4

1 回答 1

1

正如我们在聊天中所讨论的,内置的 User 对象旨在用于管理站点。但在您的情况下,它与您的模型无关,只会增加限制和复杂性。

在这种情况下,最好的方法是将您自己的模型用作独立的用户类,并使用内置的 User 作为管理员(或根本不使用)。为此,您需要继承 AbstractBaseUser 并按照此处的说明进行操作:

https://docs.djangoproject.com/en/dev/topics/auth/customizing/#specifying-a-custom-user-model

它真的非常详细,如果您遇到任何问题,请回到这里,肯定会有人帮忙

于 2013-10-25T07:53:32.190 回答