У меня есть форма в моем приложении Django (не в администраторе), который позволяет сотрудникам выбирать пользователя из выпадающего.
forms.ModelChoiceField(queryset = User.objects.filter(is_staff=False), required = False)
Проблема состоит в том, что выпадающие выставочные пользователи именами пользователей, тогда как я быть бы он показывать их полное имя от пользователя get_full_name () и использовать имя пользователя, только если это не доступно. Мне только действительно нужно это изменение на этой странице в других местах как администратор, я не забочусь, использует ли это имя пользователя.
Существует ли способ, которым я могу сделать это?
Спасибо!
Вы можете настроить пользовательское 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)
Дополнительную информацию можно найти здесь
Вы можете переопределить поле с помощью настраиваемого ModelChoiceField
и изменить функцию label_from_instance
, чтобы вместо этого возвращалось get_full_name
. См. Документацию для ModelChoiceField
: http://docs.djangoproject.com/en/1.2/ref/forms/fields/#modelchoicefield