这是 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 类型。
我应该扩展实际的 User
类型,而不是 OneToOne 关系吗?
最佳答案
正如我们在聊天中讨论的那样,内置的 User 对象旨在在管理站点中使用。但就您而言,它与您的模型无关,只会增加限制和复杂性。
在这种情况下,最好的方法是使用您自己的模型作为独立的用户类,并使用内置的管理员用户(或根本不使用)。为此,您需要子类化 AbstractBaseUser 并按照此处的说明进行操作:
https://docs.djangoproject.com/en/dev/topics/auth/customizing/#specifying-a-custom-user-model
它真的非常详细,如果您遇到任何问题,请回到这里,这样肯定会有人帮助解决这个问题
关于python - 管理中的 Django OneToOne 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19583251/