如何在 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_name
和 user_name
,并显示第一个可用的。
{% block welcome-msg %}
{% translate 'Welcome,' %}
<strong>
{% firstof user.get_short_name user.get_username %}
</strong>.
{% endblock %}
和get_short_name
returns用户的名字。因此,您的用户没有定义他们的名字,因此它显示了他们的用户名。
注意 : 请检查您的 Django 版本的文档,因为它已在 1.5 及更高版本之后实现,并且仅对更高版本有效。
我正在使用来自 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 服务器初始化时执行
如果您尝试更改显示在右上角的 用户名(如 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_name
和 user_name
,并显示第一个可用的。
{% block welcome-msg %}
{% translate 'Welcome,' %}
<strong>
{% firstof user.get_short_name user.get_username %}
</strong>.
{% endblock %}
和get_short_name
returns用户的名字。因此,您的用户没有定义他们的名字,因此它显示了他们的用户名。
注意 : 请检查您的 Django 版本的文档,因为它已在 1.5 及更高版本之后实现,并且仅对更高版本有效。