我的网站有许多ModelForms,每当它有一个外键属性到用户模型,显示的属性是用户名。我怎样才能改变这一点,使其表示为用户的全名(或其他名称)呢?我更倾向于寻找一个全局的解决方案,从现在开始,它将适用于所有的模型表单,但我不会放弃涉及定制每个表单(而不是更改模型)的修复。我正在使用用户模型的userprofile扩展。
到目前为止,我尝试的修复方法是取代user类中的str方法。这是我对模型类的剪辑(取自本论坛的一个条目,顺便说一句)。以下代码位于models.py文件中:
#CUSTOMIZES REPRESENTATION OF USER
def get_full_name(self):
return self.first_name + ' ' + self.last_name
User.add_to_class("__str__", get_full_name)
谢谢大家!
2条答案
按热度按时间fhg3lkii1#
@pgcd建议的自定义用户模型可能是这里的最佳选择。
但是,如果您想为每个表单单独定制它,那么您可以子类化
ModelChoiceField
并覆盖label_from_instance
。然后在表单中使用自定义模型选择字段。
jchrr9hc2#
您可以简单地使用自定义User模型,并在自定义模型中根据需要覆盖
__str__
方法。例如: