2009-07-06 17 views
4

django.contrib.auth.modelsで定義されているUserオブジェクトへの外部キーを持つアクティビティとオブジェクトを持つDjangoアプリケーションがあります。これを行うにあたり、ユーザのusernameというプロパティが得られます。これはログインIDです。ユーザー名ではなく、django形式のフルネームを表示します。

Userオブジェクトは完全な名前を格納するので、フォーム上にChoiceFieldを作成してユーザー名ではなくユーザーの完全な名前を表示するにはどうすればいいですか?

答えて

14

以下の作品は絶対わからないあなたは、通常のChoiceFieldを持っていますが、modelChoiceFieldを持っている場合は、次の操作を行うことができる場合:

class UserModelChoiceField(forms.ModelChoiceField): 
    """ 
    Extend ModelChoiceField for users so that the choices are 
    listed as 'first_name last_name (username)' instead of just 
    'username'. 

    """ 
    def label_from_instance(self, obj): 
     return "%s (%s)" % (obj.get_full_name(), obj.username) 


class XYZForm(forms.Form): 
    ... 
    xyz = UserModelChoiceField(User.objects.all()) 
+0

ありがとうございます。 –

0

フォームを変更しようとしている場合は、前の回答に追加するには管理者の場合、XYZFormクラスはforms.ModelFormから継承し、admin.pyではform属性= XYZFormを持つXYZAdminクラスを作成する必要があります

関連する問題