0

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

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

我编写了一个full_name()在我的用户配置文件模型中调用的函数,以按照我希望的方式显示全名。

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

在此处输入图像描述

4

1 回答 1

2

不要尝试对您的安装进行猴子补丁。这确实是个坏主意。

您可以在此处阅读如何覆盖模型选择表单字段显示其模型实例的方式。

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

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

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

于 2012-06-02T20:14:32.123 回答