问题描述
我正在使用来自 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_name
和 user_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