【发布时间】:2014-06-11 20:36:35
【问题描述】:
所以我得到了一个简单的注册表单。在此表单中还有 3 个字段:
- 大学
- 课程
- 模块
我要做的是过滤数据。因此,当用户选择一所大学时,课程字段(选择)将显示属于该大学的所有课程。此外,当用户选择一门课程时,模块字段(选择)将显示属于该课程的所有模块。如果你检查图像,你会发现它有点简单。
我设法展示了所有大学、课程和模块,但这并不实用,因为数据不正确(显示所有条目)。我知道如何过滤查询集,但我不知道如何使用 AJAX 来做到这一点。尝试了很多教程,但找不到东西,所以很抱歉没有发布代码。
如果你能指出正确的教程、示例或给我一些代码来开始工作...
更新
我使用 Del 的示例开始研究它。问题是我一点也不擅长 AJAX 和 JS。所以我创建了一个从 ajax 表单接收请求的视图(现在它只返回所有课程,没有过滤)。我遇到的问题是,当我选择大学时,course 选择为空。所以我猜它没有从视图中获取数据。如果你可以看看..
查看
def ajax_get_courses(request):
courses = Course.objects.all()
if request.is_ajax():
data = serializers.serialize('json', courses)
return HttpResponse(data,'json')
else:
return render_to_response('registration/registration_form_teacher.html', {'courses':courses}, context=RequestContext(request))
js
$(document).ready(function(){
$("#university").change(function(){
var request = $.ajax({
url: "{% url 'ajax_get_courses' %}",
type: "POST",
data: { university: $("#university").val(),
csrfmiddlewaretoken: '{{ csrf_token }}'
},
dataType: "html"
});
request.done(function(msg) {
$("#course").html( msg );
});
});
});
更新 2
所以我选择大学后,选择课程源码是这样的:
<select id="course" name="course" class="form-control">[{"pk": 1, "model": "studies.course", "fields": {"attendance": "FT", "name": "Computer Science", "degree": "BSc (Hons)", "university": 1, "modules": [], "years": 3}}, {"pk": 2, "model": "studies.course", "fields": {"attendance": "FT", "name": "Computer Science", "degree": "MComp (Hons)", "university": 1, "modules": [], "years": 4}}, {"pk": 3, "model": "studies.course", "fields": {"attendance": "FT", "name": "Civil Engineering", "degree": "BEng (Hons)", "university": 1, "modules": [], "years": 3}}, {"pk": 4, "model": "studies.course", "fields": {"attendance": "FT", "name": "Civil Engineering", "degree": "MEng (Hons)", "university": 1, "modules": [], "years": 4}}, {"pk": 5, "model": "studies.course", "fields": {"attendance": "FT", "name": "Pharmacy", "degree": "MPharm (Hons)", "university": 1, "modules": [], "years": 4}}, {"pk": 6, "model": "studies.course", "fields": {"attendance": "FT", "name": "Aeronautical Engineering", "degree": "MEng (Hons)", "university": 4, "modules": [], "years": 4}}, {"pk": 7, "model": "studies.course", "fields": {"attendance": "FT", "name": "Biochemistry", "degree": "BSc (Hons)", "university": 3, "modules": [], "years": 3}}, {"pk": 8, "model": "studies.course", "fields": {"attendance": "FT", "name": "Chemistry", "degree": "BSc (Hons)", "university": 3, "modules": [], "years": 3}}, {"pk": 9, "model": "studies.course", "fields": {"attendance": "FT", "name": "Business Studies", "degree": "BSc (Hons)", "university": 3, "modules": [], "years": 3}}]</select>
这意味着我正在获取数据但我必须添加一些 html?喜欢<li>...</li>?
【问题讨论】:
标签: jquery python ajax django forms