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

How to change the user display name to their first name in Django

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

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

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


您可以使用lambda函数来改变__str__() auth 用户的方法为

from django.contrib.auth.models import User

User.__str__ = lambda user_instance: user_instance.first_name

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

如果您尝试更改显示在右上角的 用户名(如 所述),请将 lambda 函数设置为 get_short_name 作为,

from django.contrib.auth.models import User

User.get_short_name = lambda user_instance: f"Prefix : {user_instance.first_name} : Suffix"

对于任何此类更改,您应该参考呈现它的模板。在这里,它是 Django Admin 的 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 returns用户的名字。因此,您的用户没有定义他们的名字,因此它显示了他们的用户名。

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