我在“/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之后,我发现模型表单的选择菜单中的用户仍然由用户名表示。为什么呢?
答案 0 :(得分:2)
不要试图修补你的安装。这真是一个坏主意。
您可以read here如何覆盖模型选择表单字段显示其模型实例的方式。
在你的情况下,它看起来像这样:
class UserChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return obj.get_profile().full_name()
然后在表单中使用此字段。在模型表单中,您必须覆盖使用的默认字段。