如何在 Django 中将用户显示名称更改为他们的名字

问题描述

我正在使用来自 from django.contrib.auth.models import User 的 Django 内置用户身份验证系统。我意识到在管理页面中它总是显示用户的用户名。是否可以更改该函数的 def __str__ (self): 方法以显示自定义的方法,例如这样。

def __str__ (self):
    return f"{self.first_name}"

解决方法

对于任何此类更改,您应该参考呈现它的模板。在这里,它是 Django 管理员的 base.html 模板。

正如您在 this line in the file 中看到的那样,它按该顺序搜索 short_nameuser_name 并显示第一个可用的。

            {% block welcome-msg %}
                {% translate 'Welcome,' %}
                <strong>{% firstof user.get_short_name user.get_username %}</strong>.
            {% endblock %}

get_short_name 返回用户的名字。因此,您的用户没有定义他们的名字,因此显示的是他们的用户名。

注意:请检查您的 Django 版本的文档,因为它已在 1.5 及更高版本之后实现,并且仅对更高版本有效。

,

我强烈推荐extend the auth user model,因此您迟早可以进行很多自定义


您可以使用 lambda 函数来更改身份验证用户的 __str__() 方法

from django.contrib.auth.models import User

User.__str__ = lambda user_instance: user_instance.first_name

注意:此代码段应在 Django 服务器初始化时执行

如果您尝试更改显示在右上角的用户名(如 @amit sigh 所述),请为 {{1 设置 lambda 函数}}如,

get_short_name

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...