django如何在FilteredSelectMultiple中显示用户全名

nas*_*eeg 5 python django

我正在尝试使用FilteredSelectMultiple小部件来显示用户列表.目前它只显示用户名.我试图覆盖label_from_instance,如下所示,但它似乎不起作用.如何才能显示用户的全名.

class UserMultipleChoiceField(FilteredSelectMultiple):
    """
    Custom multiple select Feild with full name
    """                                                                                                                                                                 
    def label_from_instance(self, obj):
              return "%s" % (obj.get_full_name())

class TicketForm(forms.Form):
    cc_to  = forms.ModelMultipleChoiceField(queryset=User.objects.filter(is_active=True).order_by('username'), widget=UserMultipleChoiceField("CC TO", is_stacked=True)
Run Code Online (Sandbox Code Playgroud)

jnn*_*nns 14

最简单的办法是把下面的models.py其中django.contrib.auth.models.User输入:

def user_unicode_patch(self):
    return '%s %s' % (self.first_name, self.last_name)

User.__unicode__ = user_unicode_patch
Run Code Online (Sandbox Code Playgroud)

这将使用自定义函数覆盖User模型的__unicode__()方法,该函数显示您想要的任何内容.


Art*_*eev 3

有点晚了,但我认为这可能会帮助人们尝试解决类似的问题:http ://djangosnippets.org/snippets/1642/