使用Django中的日历搜索和显示结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Django中的日历搜索和显示结果相关的知识,希望对你有一定的参考价值。

我想使用日历执行搜索操作。我将选择两个日期,即max_date,它不得超过当前日期,但可以更小和min_date,这两个日期应该是日期范围。结果字段为:in_count,out_count和dwell_time。输出应该总结max_date和min_date之间所有日期的所有结果。我怎样才能做到这一点?请帮忙。是否需要为此定义模型?我完全无能为力。

目前,我正在使用搜索栏执行搜索操作。

我的模特:


class Result(models.Model):

    in_count   = models.PositiveIntegerField()
    out_count  = models.PositiveIntegerField()
    date_time  = models.DateTimeField()
    time       = models.TimeField()


    def __str__(self):
        return "{},{},{},{}".format(self.in_count, self.out_count, self.date_time, self.time)

我的views.py

class ResultListView(ListView):

    def get_queryset(self, *args, **kwargs):
        qs = Result.objects.all()
        print(self.request.GET)
        query = self.request.GET.get("q", None)
        if query is not None:
            qs = qs.filter(
                Q(in_count__icontains=query) | Q(out_count__icontains=query) | Q(date_time__icontains=query) | Q(time__icontains=query))
        return qs

    def get_context_data(self, *args, **kwargs):
        context = super(ResultListView, self).get_context_data(*args, **kwargs)

        return context


class ResultDetailView(DetailView):
    queryset = Result.objects.all()

我的result_list.html

 <div class="card-header">Result on {{ object.date_time}}</div>
  <div class="card-body">
    <h3 class="card-title"><a  href="{% url 'result:result' %}"style="color: white; ">Result of Model</a></h3>
    <p class="card-text"> In Count {{ object.in_count }}</p>

    <p class="card-text">Out Count {{ object.out_count}}</p>

预期结果是以与result_list.html相同的形式获得输出,其中包含从min_date开始直到max_date显示的所有日期字段的结果,并且还应在模板中显示min_date和max_date。请帮助。

答案

首先需要过滤Result对象以仅包含相关条目,然后聚合过滤后的条目。这个都在django文档中解释,我建议你经历一次。 https://docs.djangoproject.com/en/2.2/ref/models/querysets/#range https://docs.djangoproject.com/en/2.2/topics/db/aggregation/

在您的具体情况下,它将如下所示:

Result.objects.filter(
    date_time__range=[start_date, end_date]
).aggregate(Sum('in_count'), Sum('out_count'))

以上是关于使用Django中的日历搜索和显示结果的主要内容,如果未能解决你的问题,请参考以下文章

仅显示月份和年份的 Django DateField 日历?

如何在 django 中显示来自 ajax 搜索结果的产品?

如何在 Django Summernote 中显示编程片段的代码块?

在 Django/PostgreSQL 搜索结果页面上突出显示搜索词

片段中的片段

如何在新页面中显示 django 搜索结果