为什么我的Django应用程序中User对象的字符串表示形式保持不变?

时间:2012-06-02 19:15:16

标签: django django-authentication

我在“/home/david/django/django/contrib/auth/models.py”中更改了User类,如下所示,以覆盖Django应用程序中用户的字符串表示形式。

class User(models.Model):
    ...
    def __unicode__(self):
        return self.get_profile().full_name()

我在我的用户个人资料模型中编写了一个名为full_name()的函数,以我希望它们显示的方式显示全名。

然而,在我重新启动Apache之后,我发现模型表单的选择菜单中的用户仍然由用户名表示。为什么呢?

enter image description here

1 个答案:

答案 0 :(得分:2)

不要试图修补你的安装。这真是一个坏主意。

您可以read here如何覆盖模型选择表单字段显示其模型实例的方式。

在你的情况下,它看起来像这样:

class UserChoiceField(ModelChoiceField):
    def label_from_instance(self, obj):
        return obj.get_profile().full_name()

然后在表单中使用此字段。在模型表单中,您必须覆盖使用的默认字段。