Django-为单个表单字段覆盖__str__方法

时间:2018-10-10 17:28:15

标签: python django python-3.x django-1.11

我有自己的用户模型,并像这样覆盖了__str__方法:

def get_django_user_full_name(self):
  return self.get_full_name()

User.add_to_class("__str__", get_django_user_full_name)

现在的问题:我有一个特定的下拉菜单,我希望它以其他方式显示用户,即:

def get_user_name_last_first_email(self):
  return self.last_name + ', ' + self.first_name + ', ' + self.email

User.add_to_class("last_first_email", get_user_name_last_first_email)    

特定的下拉菜单表单字段为:

  assignee = forms.ModelMultipleChoiceField(queryset=User.objects.filter(groups__name='actor').order_by('last_name'), required=False)

但是,此下拉菜单应该以默认的“ first_name last_name”方式显示。

我无法找到一种方法来强制它在下拉菜单中显示名称为“ last_name,first_name,email”(使用是否建立的自定义属性)。我发现覆盖它的唯一方法是使用values_list(),但要么返回一个字段(如果flat = True),要么返回全部3个字段,但返回丑陋的元组。

tl; dr如何自定义表单中查询集的显示(即__str__方法)?

0 个答案:

没有答案