2012-08-16 2 views
7

ModelForms를 사용하여 웹 사이트 용 양식을 만들고 있지만 선택 상자에 표시 할 텍스트를보다 잘 제어하고 싶습니다.Django 선택 양식 필드 용 레이블

예 모델의 기본 키가 나는이 모델의 modelForm을 할 때, 내 문제는, 외부 키 필드가 선택 필드에 만들어진 것으로이

class Test(models.Model) 
    ID = IntegerField() 
    Label = CharacterField() 
    recipient = ForeignKey(Person) 
    product = ForeignKey(Product) 

처럼 볼 수 있었다 기본 값에있는 객체 및 표시된 텍스트는 객체 __unicode__() 메서드의 텍스트입니다. 이 경우 제품 ID 만 표시됩니다 (사용자에게 이해가되지 않는 일련 번호입니다). "[serial], [product name]"과 같은 사용자 정의 레이블을 만들 수 있기를 원합니다.

나는 공식 Django 문서에 대한 어떤 포인터도 찾을 수 없으므로 아무도 도움이 될지 궁금한가요? :)

+0

당신은'예상 무슨 표시하는 모델의 __unicode__' 방법을 변경할 수 있습니까? – Rohan

+0

그것은 명백한 해결책이 될 것이지만 유니 코드 방법은 웹 사이트 전체에서 많이 사용되고 있습니다.이 방법은 일련 번호 만 표시하는 것이 중요합니다. 그래서 그건 선택 사항이 아닙니다, 저는 두려워합니다. – Eldamir

답변

7

Django docs regarding the ModelChoiceField을 확인하십시오. 인용구 : 모델의 __unicode__ 방법은 문자열을 필드의 선택에 사용되는 객체의 표현을 생성하기 위해 호출됩니다

; 으로 사용자 정의 된 표현을 제공하고 ModelChoiceField 서브 클래스와 label_from_instance를 대체하십시오. 이 메서드는 모델 객체 인 을 받고이를 나타내는 데 적합한 문자열을 반환해야합니다. 예를 들어 :

class MyModelChoiceField(ModelChoiceField): 
    def label_from_instance(self, obj): 
     return "My Object #%i" % obj.id 
+0

그건 뭔가 들리 겠지만, 그럴 수도 있습니다. 나는 그것을 밖으로 검사 할 것이다 – Eldamir

+0

그것은 훌륭하게 일했다. 고마워 친구 – Eldamir

관련 문제