在Admin应用程序中左加入Django模型多表继承

时间:2012-06-02 07:01:34

标签: django django-models django-admin

情景:

假设我想使用多表继承来扩展Django的User模型。假设我为此创建的模型称为CustomUser

现在让我们假设数据库中已存在与User模型对应的记录,并且与CustomUser模型对应的表仍为空。

现在我希望可以从Django的Admin应用程序访问CustomUser模型。我注意到只有CustomUser表中具有相应记录的用户模型记录包含在CustomUser的更改列表中,就像在查询中的场景后面进行INNER JOIN一样... (我使用connection.queries进行了检查,确实是内部联接。

现在我想更改此行为,以便完成LEFT JOIN以检索与CustomerUser相关的记录。

如何在Django中实现这一目标?

非常感谢!

1 个答案:

答案 0 :(得分:1)

将以下内容放在任何有效的admin.py。

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
#### below imports your custom user model
from accounts.models import CustomUser   

admin.site.unregister(User)

class UserProfileInline(admin.StackedInline):
    model = CustomUser   

class UserProfileAdmin(UserAdmin):
    inlines = [ UserProfileInline, ]

admin.site.register(User, UserProfileAdmin)

以上将在管理员的用户中显示您的CustomUser模型。现在你可以通过User__first_name等来访问UserProfileAdmin中的用户字段。请原谅我的英文不好。