2009-07-06 3 views
4

django.contrib.auth.models에 정의 된 User 객체에 대한 외래 키가있는 활동 및 객체가있는 장고 응용 프로그램이 있습니다. 이렇게하면 로그인 ID 인 사용자의 username 속성을 얻게됩니다.사용자 이름이 아닌 django 양식의 전체 이름 표시

사용자 개체는 전체 이름을 저장하므로 양식에 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 클래스를 만들어야합니다.