>  기사  >  백엔드 개발  >  Django ModelForm에서 ForeignKey 선택을 필터링하는 방법은 무엇입니까?

Django ModelForm에서 ForeignKey 선택을 필터링하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-17 02:44:03786검색

How to Filter ForeignKey Choices in a Django ModelForm?

Django ModelForm에서 ForeignKey 선택 조정

Context

Django 모델에서 ForeignKey는 두 모델 간의 관계를 정의합니다. 이 문서는 Django ModelForm의 ForeignKey 필드에 사용 가능한 선택 사항을 필터링하여 관련 옵션만 표시되도록 하는 방법을 보여줍니다.

Filtering ForeignKey Choices

주어진 시나리오에서 다음을 생성하는 것을 목표로 합니다. 특정 회사와 관련된 고객을 추가하기 위한 양식입니다. 고객의 base_rate ForeignKey는 해당 회사와 관련된 환율만 표시해야 합니다. Django 1.0에서 이를 달성하려면 다음 단계를 따르세요.

  1. 보기 함수에서 양식 템플릿을 렌더링하기 전에 원하는 ForeignKey 필드의 queryset 속성을 필터링된 QuerySet으로 설정합니다.
form.fields["base_rate"].queryset = Rate.objects.filter(company_id=the_company.id)

이 쿼리 세트는 선택한 회사와 관련된 요금만 양식에서 선택 사항으로 제공되도록 보장합니다.

Django 0.96 Hack

Django 0.96에 대해 게시된 솔루션은 실제로 Django 양식의 기본 기능을 우회하는 해킹입니다. 이는 ForeignKey 필드의 선택 속성을 직접 수정하므로 불일치가 발생할 수 있으며 프로덕션 코드에는 권장되지 않습니다.

ModelChoiceField Queryset

Django 문서에는 ModelChoiceField의 선택 항목이 다음에 의해 정의된다는 것이 명확하게 나와 있습니다. 쿼리세트 속성입니다. 이 속성을 적절한 QuerySet에 명시적으로 설정하면 원하는 개체 하위 집합에 맞게 외래 키 선택을 조정할 수 있습니다. 이 방법은 해킹을 방지하고 깨끗하고 유지 관리 가능한 접근 방식을 보장합니다.

위 내용은 Django ModelForm에서 ForeignKey 선택을 필터링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.