Django – ForeignKey display text 변경하기
modelforms 에서 자동으로 값을 가져오긴 하는데 __str__ 에 정의된 글자나 키 값을 기본으로 보여준다. 부가적으로 정보를 더 보여주고 싶은데 __str__
을 바꾸면 전체에 이 모델을 접근하는 부분이 다 바뀌므로, 딱 combo에 올라가는 글자만 변경하고 싶다면,
label_from_instance 속성을 건드리면 된다.
자세한 설명은 아래 링크를 참고해 보시고,
How to change ForeignKey display text in the Django Admin?
예제 코드를 살펴보면,
subform.fields["product_profile"].queryset = get_user_productprofile(companyid=_companyid, is_superuser=_superuser).order_by("name")subform.fields["product_profile"].label_from_instance = lambda obj: "%s(%s)" % (obj.name, obj.product.name)
queryset 을 통해 필터링 결과를 넣어 줄 수 있고
label_from_instance 통해 display text 를 변경할 수 있다. 예제에서 필드명(상품명)
상태로 보이도록 수정한 버전이다.
참고 사이트
- 람다 lambda 를 사용하고 있는데, 관련 기초 정보는 여기를 가보세요.