gpt4 book ai didi

python - django 中的动态表单与 ajax/dajax

转载 作者:行者123 更新时间:2023-12-01 06:10:52 28 4
gpt4 key购买 nike

我有一个带有查询集的简单表单,用于显示作业对象并允许用户选择一个。现在,我想要一组两个单选按钮,允许用户选择“过滤选项”。如果用户使用单选按钮选择组过滤器,我会出现一个下拉列表,允许他们选择要过滤的组。我想在不重新加载页面的情况下执行此操作,因此我尝试使用 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>

最佳答案

您需要将 dajaxice 函数添加到 select onchange 中,以在模板中引用您的函数。

类似于:

<select name="combo2" id="combo2" onchange="Dajaxice.your_project.your_appname.updatefilter(Dajax.process,{'option':this.value}" size="1"></select>

(将 your_project 替换为您的项目名称,将 your_app 替换为您的应用程序名称)。

还要确保您的模板中具有所有必要的标题(并且它们确实存在;例如,如果您查看源代码,则可以单击它们)。

请务必使用 google chrome 检查器 (Ctrl-Shift-I) 或 firebug(在 Firefox 中)进行调试。

编辑:我现在注意到您的表单中有类似的内容。当您查看源代码时,它如何在 HTML 中呈现?是不是转义不当?

关于python - django 中的动态表单与 ajax/dajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5983603/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com