programing

Django, ModelChoiceField () 및 초기 값

minecode 2021. 1. 18. 07:50
반응형

Django, ModelChoiceField () 및 초기 값


나는 다음과 같은 것을 사용하고 있습니다.

field1 = forms.ModelChoiceField(queryset=...)

내 양식에 선택한 값이 표시되도록하려면 어떻게해야합니까?


기본 초기 값을 설정하려면 대신 id로 설정하는initial 것을 제외하고는 다른 양식 필드와 같이 정의해야합니다 .

다음 field1과 같다고 가정 해 보겠습니다 .

class YourForm(forms.Form):
    field1 = forms.ModelChoiceField(queryset = MyModel.objects.all() )

다음과 같이 양식을 만들 때 이니셜을 설정해야합니다.

form = YourForm(initial = {'field1': instance_of_mymodel.pk })

보다는 :

form = YourForm(initial = {'field1': instance_of_mymodel })

또한 __unicode__이것이 올바르게 표시되도록 모델에 대해 정의했다고 가정 합니다.


그냥 사용할 수 있습니다

 field1 = forms.ModelChoiceField(queryset=..., initial=0) 

첫 번째 값을 선택하는 등의 방법이 있습니다. 더 일반적인 방법이고 다른 답변입니다.


그들이 변한 시간 :

이제 initial다른 양식 필드처럼 정의하여 기본 초기 값을 설정할 수 있습니다.대신 ID로 설정하는 것을 제외하고.

이제 이것으로 충분합니다.

form = YourForm(initial = {'field1': instance_of_mymodel })

둘 다 여전히 작동하지만.


코드

form = YourForm(initial = {'field1': instance_of_mymodel.pk })

form = YourForm(initial = {'field1': instance_of_mymodel })

또는 바로 뒤에 오는 초기 필드 :

field1 = forms.ModelChoiceField(queryset=..., initial=0) 

모두 작동합니다.

처음 두 가지 방법은 최종 방법보다 우선합니다.


field1 = forms.ModelChoiceField(queryset=Model.objects.all(), empty_label="Selected value")

그렇게 간단합니다 ....!


다음과 같이 할 수도 있습니다.

form = YourForm(initial = {'field1': pk })

쿼리 문자열을 통해 또는 인스턴스가 필요없는 ajax 호출을 통해 기본 키를 구문 분석하는 경우 쿼리 세트는 이미 드롭 다운에 대해 처리했으며 pk는 원하는 상태를 인덱싱합니다.

참조 URL : https://stackoverflow.com/questions/1336900/django-modelchoicefield-and-initial-value

반응형