【发布时间】:2019-07-18 16:25:11
【问题描述】:
我有一个简单的模板,首先用户从国家列表中选择一个国家,然后从所选国家的区域列表中选择一个区域,最后提交并显示结果。
问题是选择一个国家时,只有在单击提交按钮后才显示该国家的区域,以便用户必须单击提交两次,首先选择一个国家以查看区域列表,第二次选择区域后查看结果。
# models.py
class Region(models.Model):
country_list = [('IT', 'Italy'),
('FR', 'France')]
name = models.CharField(max_length=38)
country = models.CharField(max_length=2, choices=country_list, default="IT")
#views.py
def index_w(request):
country = request.GET.get('country')
region = Region.objects.all()
region = region.filter(country=country)
regions = request.GET.get('regions')
results = Result.objects.all()
if regions is not None:
results = results.filter(region=regions)
return render(request, 'index_uni.html', {
'regions': region,
'country': country
})
/*template*/
<form method="get" action="/university/" class="form-area">
<select name="country">
<option value="IT">Italia</option>
<option value="FR">France</option>
</select>
<select name="regions">
{% for region in regions %}
<option value="{{region.id}}">{{region.name}}</option>
{% endfor %}
</select>
<input type="submit">
</form>
当页面第一次加载并且用户为“国家”选择一个值时,“地区”没有选项;单击提交后,它会正确显示法国或意大利的所有地区。 选择国家后,页面如何显示Fr或It的地区? 感谢大家的帮助,感谢任何建议,我目前正在查看 Django 教程的第 4 部分,但找不到关于此问题的任何信息。
【问题讨论】:
-
如果要根据当前(选定)国家/地区显示区域。那么你需要的是AJAX。 AJAX 将允许您在不重新加载网页的情况下提交表单。
-
没听说过,我去看看
-
是的。我建议你看一下,有很多来自不同来源的教程。它需要一点 Javascript 知识,但是一旦你学会了它,我可以向你保证,这是值得的。 @Skalfaro