Поиск и отображение результатов с помощью календаря в Django - PullRequest
0 голосов
/ 01 мая 2019

Я хочу выполнить поиск с использованием календарей.Я выберу две даты, то есть 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 также должны отображаться в шаблоне.Пожалуйста, помогите.

1 Ответ

0 голосов
/ 01 мая 2019

Сначала необходимо отфильтровать объекты 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'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...