python - 管理中的 Django OneToOne 字段

标签 python django

这是 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/

相关文章:

jquery - 目前(2011 年)通过跨域 AJAX 的 REST 是个坏主意吗?

python - 如何使用pyuno调试崩溃的openoffice

python - 如何在 django 中对每个应用程序的用户进行身份验证

Django utf-8 网址

django - 始终为真 Q 对象

python - 垫后的 tensorflow 切片不起作用,而没有垫它可以

python - 机器学习:在另一个数据集上进行预测时,分类器准确性不佳

python - 我如何线性搜索和比较两个 .text 文件以查看它们之间缺少什么?

javascript - Django 模型表单集和 Ajax

python - Django 中的 MultiValueDictKeyError