Django QuerySet重新运行空的查询集



我无法解释为什么此模型查询返回空查询集。。。

以下是我的型号:

class Marks(models.Model):
klass = models.ForeignKey(Klass,on_delete=models.SET_NULL,null=True,blank=True)
stream = models.ForeignKey(Stream,on_delete=models.SET_NULL,null=True,blank=True)
mark = models.IntegerField()
class Klass(models.Model):
name = models.CharField(max_length=20)

视图。

def ResultsView(request):
query = request.GET.get('klass')
if query:
queryset = (Q(klass__name__icontains=query))
the_student = Marks.objects.filter(queryset).distinct()
all_results = {'the_student':the_student,'query':query}
else:
all_results =  {}

return render(request,'exams.html',all_results )

表单模板

<form action="{% url 'search_marks' %}" method="GET">
<div class="input-group">
<input class="" style="flex:50%" type="text" name="klass">
<button class="btn btn-primary" type="submit"></button>
</div>
</form>

url

path('search_m',ResultsView,name='search_marks'),

我试着在这里得到结果

{% for mark in the_student %}
{{ mark }}
{% endfor %}

当我从视图中打印_student时,它会给出<QuerySet []>

当我尝试queryset = (Q(mark__icontains=query))时,会得到一个答案。我只想要克拉斯的结果

我认为您在模板中使用了整个查询集。

尝试

{% for mark in the_student %}
{{ mark.klass }}
{% endfor %}

_Student是您的响应键,但您使用_Student。

the_student!=研究

你只要换

{% for mark in the_student %}
{{ mark.klass }}
{% endfor %}

{% for mark in the_Student %}
{{ mark.klass }}
{% endfor %}

最新更新