Django ModelChoiceField изменения для показа полных имен пользователей, а не имен пользователей

У меня есть форма в моем приложении Django (не в администраторе), который позволяет сотрудникам выбирать пользователя из выпадающего.

forms.ModelChoiceField(queryset = User.objects.filter(is_staff=False), required = False)

Проблема состоит в том, что выпадающие выставочные пользователи именами пользователей, тогда как я быть бы он показывать их полное имя от пользователя get_full_name () и использовать имя пользователя, только если это не доступно. Мне только действительно нужно это изменение на этой странице в других местах как администратор, я не забочусь, использует ли это имя пользователя.

Существует ли способ, которым я могу сделать это?

Спасибо!

34
задан Adam 2 July 2010 в 17:24
поделиться

2 ответа

Вы можете настроить пользовательское ModelChoiceField , которое будет возвращать любую желаемую метку.

Поместите что-то подобное в field.py или где-нибудь еще.

class UserModelChoiceField(ModelChoiceField):
    def label_from_instance(self, obj):
         return obj.get_full_name()

Затем при создании формы просто используйте это поле.

 UserModelChoiceField(queryset=User.objects.filter(is_staff=False), required = False)

Дополнительную информацию можно найти здесь

64
ответ дан 27 November 2019 в 16:18
поделиться

Вы можете переопределить поле с помощью настраиваемого ModelChoiceField и изменить функцию label_from_instance , чтобы вместо этого возвращалось get_full_name . См. Документацию для ModelChoiceField : http://docs.djangoproject.com/en/1.2/ref/forms/fields/#modelchoicefield

2
ответ дан 27 November 2019 в 16:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: