将用户和用户资料组合在管理员中

7
我一直在研究Django的用户和个人资料分离问题,我决定采用一个名为UserProfile的模型作为我的个人资料,并将其放置在一个名为Accounts的应用程序中。 然而问题是,现在我有两个不同的管理区域,一个用于修改用户,另一个用于修改用户资料。是否有可能在管理员界面中将这两个模型视为一个模型,这样如果您添加或修改用户,则可以在同一个视图中看到用户和资料的所有字段?此外,当添加或删除用户时,也应该同时添加或删除其个人资料,并且不应该允许添加或删除没有用户的个人资料。
我已经看到了如何使其工作的代码片段(例如,添加用户时添加个人资料),但是没有完整的解决方案。
1个回答

13

你可以使用内联管理模型来完成此操作。

在编写自定义的User管理界面之前,您需要注销已注册的User管理界面。

admin.site.unregister(User)

定义内联UserProfile

class UserProfileInline(admin.TabularInline):
    model = UserProfile

并在User管理员中使用内联方式

class UserAdmin(admin.ModelAdmin):
    inlines = [UserProfileInline]
admin.site.register(User, UserAdmin)

当我这样做时,每个用户下面会出现几个“profile”表单,我无法将数据保存到其中;这导致了“'Cannot add or update a child row: a foreign key constraint fails'”。这是因为South出了问题还是过去一年中有什么变化?在这里寻找一些方向,谢谢。 - Jasper Kennis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接