我有一个访问表单,我用它来通过引用查询标准中的表单字段来过滤查询。
打开表单后,用户可以从以下字段下拉列表中选择特定条目。
但是,如果用户没有选择条目,请说他们将业务单位留空,我希望查询返回该字段的所有条目,用户没有这样做输入数据,例如它将返回所有业务单位。
我尝试按照下面的方式输入一个星号(*),并尝试将这些字段留空以使其返回所有条目,但它没有工作。
请问您如何获取查询以显示表单中用户未填充的任何字段的所有记录?
由于
我正在引用的查询如下:
查询的SQL位于
之下@login_required
def assignments(request):
terms = Course.objects.filter(students = request.user).values('term__season', 'term__year').distinct()
courses = Course.objects.filter(students = request.user)
assignments = Assignment.objects.filter(course__in=courses)
if request.method == 'POST':
# retrive ajax data
data = request.POST
course_subject = data['course_subject']
course_number = data['course_number']
course_section = data['course_section']
term_season = data['term_season']
term_year = data['term_year']
# get the associated course for the click
course = Course.objects.filter(subject = course_subject,
number = course_number,
section = course_section,
term__year = term_year,
term__season = term_season)
# get the assignments associated with that course
assignments = Assignment.objects.filter(course = course)
context_dict = {
'assignments': assignments,
'courses': courses,
'terms': terms,
}
return render(request, 'mainapp/assignments.html', context_dict)
答案 0 :(得分:1)
一种解决方案可能是将WHERE
子句中的等号运算符替换为LIKE
运算符并结合使用通配符。
这样,如果值为空,则不会限制您的搜索。