У меня есть эта простая форма с набором запросов для отображения объектов задания и позволяет пользователю выбрать один. Теперь я хотел бы иметь группу из двух переключателей, которые позволили бы пользователю выбрать «параметр фильтрации». Если пользователь выбирает групповой фильтр с помощью переключателей, я бы появился раскрывающийся список, который позволяет им выбирать, по какой группе он хотел бы фильтровать. Я хочу сделать это без перезагрузки страницы, поэтому я пытаюсь использовать dajax.
Мне удалось найти пример на веб-сайте dajax, который делает что-то похожее, однако я не смог заставить его работать. Появятся переключатели и выпадающий список (пустой). Когда я нажимаю радиокнопку «Группа», раскрывающийся список должен заполняться всеми объектами моей группы, но это не так.
Я застрял на этом некоторое время, поэтому любая помощь будет принята с благодарностью.
forms.py
filters = (('0', 'Group'),
('1', 'Host'),
)
class JobSelectForm(forms.Form):
def __init__(self, *args, **kwargs):
super(JobSelectForm, self).__init__(*args, **kwargs)
self.fields['jobs'].widget.attrs["size"] = 20
jobs = forms.ModelChoiceField(queryset=Job.objects.all().order_by('name'), empty_label=None,)
filter = forms.ChoiceField(choices=filters,
widget=forms.RadioSelect(attrs={'onchange': "Dajaxice.tdportal.updatefilter(Dajax.process,{'option':this.value})", 'name':'combo1', 'id':'combo1', },
renderer=HorizRadioRenderer),
ajax.py
def updatefilter(request, option):
dajax = Dajax()
options = [Group.objects.all(),
Host.objects.all(),
]
out = ""
for o in options[int(option)]:
out = "%s<option value='#'>%s" % (out,o,)
dajax.assign('#combo2','innerHTML',out)
return dajax.json()
dajaxice_functions.register(updatefilter)
шаблон
{{selectForm.filter.label}}: {{selectForm.filter}}
<br>
<select name="combo2" id="combo2" onchange="" size="1"></select>
<br><br>
<form method="post" action="/tdportal/jobs/">{% csrf_token %}
{{selectForm.jobs}}
<br><br>
<input type="submit" value="Edit" /> <a href="/tdportal/jobs/new/"><input type="button" name="new" value="New" /></a>
</form>