Django - 在用户个人资料管理中显示用户电子邮件

时间:2015-10-30 04:05:22

标签: django email admin

这可能是一个非常简单的问题,但我无法在SO中找到它。

我通过OnetoOneField为其他用户信息创建了一个用户配置文件模型。现在,对于用户配置文件模型的管理员,我想显示在用户模型中找到的电子邮件字段。我试过了:

# models.py
def email(self):
    return self.user.email

# admin.py 
fieldsets = [
    ('',    {'fields': [
        ...
        'email',
        ...
    ]})
]
list_display = (
    ...
    'email',
    ...
)

这适用于list_display部分,但对于fieldsets,会弹出以下错误:

  

为UserProfile指定的未知字段(电子邮件)。检查字段/字段集/排除类UserProfileAdmin的属性。

有办法解决这个问题吗?提前谢谢!

2 个答案:

答案 0 :(得分:0)

来自documentation

  

fields可以包含要显示的readonly_fields中定义的值   只读。

     

如果将可调用名称添加到fields,则应用相同的规则   使用fields选项:必须列出可调用对象   readonly_fields

所以你需要添加:

readonly_fields = ('email',)

到您的模型管理类,然后它将在字段集中可用。

答案 1 :(得分:0)

把这个

def email(self, obj):
    return obj.user.email

在您的userprofile管理类中,您将能够在字段集中使用它。