Створіть порожній набір запитів за замовчуванням у полях форми 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/…
Телярій

Відповіді:


422

Ви можете мати порожній набір запитів, виконавши це:

MyModel.objects.none()

Хоча я не знаю, як ти будеш використовувати цю форму, ти можеш поставити це як набір запитів свого поля, щоб отримати те, що тобі потрібно ...

Ви можете знайти більше інформації тут


4
У випадку використання ваш набір запитів змінюється у вашому перегляді на основі параметрів URL. Тоді у вашому представленні ви встановлюєте правильний набір запитів, як-от так: edit_form.fields ["актив"]. 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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.