django 양식 필드에서 기본적으로 빈 쿼리 세트 만들기


169

이 필드의 형태는 다음과 같습니다.

city = forms.ModelChoiceField(label="city", queryset=MyCity.objects.all())
district = forms.ModelChoiceField(label="district", queryset=MyDistrict.objects.all())
area = forms.ModelChoiceField(label="area", queryset=MyArea.objects.all())

지역은 도시를 클릭하면오고 지역은 지역을 클릭하면옵니다. 로 queryset=MyDistrict.objects.all()queryset=MyArea.objects.all()형태가 매우 무거운 것입니다. 쿼리 셋을 기본적으로 비우려면 어떻게해야합니까?


내 제안 편집은 게시물을 향상시킵니다. 일반적으로 게시물은 "감사"로 끝나서는 안됩니다. 개인적이지 않습니다. meta.stackexchange.com/questions/17878/...
Telarian

답변:


422

다음을 수행하여 빈 쿼리 집합을 가질 수 있습니다.

MyModel.objects.none()

이 양식을 어떻게 사용할지 모르겠지만 필요한 것을 얻기 위해 필드의 쿼리 세트로 넣을 수 있습니다 ...

자세한 내용은 여기를 참조 하십시오


4
유스 케이스의 경우 쿼리 매개 변수가 URL 매개 변수에 따라보기에서 변경됩니다. 그런 다음 뷰에서 올바른 쿼리 세트를 다음과 같이 설정하십시오. edit_form.fields [ "asset"]. queryset = Asset.objects.filter (location_id = location_id)
radtek

모델이 없으면 values_list('something', flat=True)어떻게합니까?
보리스

2

@radtek의 의견 은 비슷한 시나리오에서 유용하지만 허용되는 답변과 다른 접근 방식으로 대답해야합니다.

조회수가 URL의 뷰에서 변경되는 경우

내가 사용한 것처럼 예제로 답변을 확장하고 있습니다.

def my_view(request):
    ...
    form = YourForm(initial={'field1':value1, 'field2':value2})
    form.fields['field3'].queryset = YourModel.objects.filter('foo'=bar)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.