Django: Как генерировать недели месяца (начиная с первого дня месяца до следующей пятницы), затем с субботы по следующую пятницу до конца месяца? - PullRequest
0 голосов
/ 04 апреля 2020

Я работаю над проектом Django, который состоит из прогнозирования предстоящей кредиторской задолженности (AP) и дебиторской задолженности (AR). Тем не менее, я наткнулся на проблему, так как я не знаю, как генерировать недели определенного месяца. Например, в апреле месяце я бы хотел, чтобы даты были разбиты на: 01/04/20 - 10/04/20 (следующая пятница), 11/04/20 - 17/04/20 (пятница после что) и так далее и тому подобное. В течение каждой недели будет добавляться поле «сумма», чтобы показать общую сумму, ожидаемую к оплате / получению в течение этой недели. Вот мой код, и мне удалось сгруппировать наборы запросов по месяцам, а поле «сумма» - по месяцам. Однако я не слишком уверен, как сгруппировать его по неделям месяца, так как функция ExtractWeek Django работает на годовой основе.

views.py

class APView(LoginRequiredMixin,CreateView):
   model = AP
   form_class = APForm
   template_name = 'cash/ap.html'

   def get_context_data(self, **kwargs):
     context = super(APView, self).get_context_data(**kwargs)
     time_range = []
     done = False
     time = self.kwargs['time']
     start = int(self.kwargs['start'])
     end = int(self.kwargs['end'])
     context['bp'] = BusinessPartners.objects.prefetch_related('ap_set').all()
     context['ap'] = BusinessPartners.objects.annotate(timeline=Extract('ap__due_date', time)).values('timeline').annotate(total=Sum('ap__amount')).values('timeline','total', 'bp_name') 
     while not done:
         time_range.append(start)
         if start == end:
             done = True
             break
         start += 1
     context['timeline'] = time_range
     context['range'] = time
     return context

   def get_success_url(self):
      return reverse('home')

Я ищу либо передать набор запросов, состоящий из дней недели недели (то есть манипуляции выполняются в views.py), либо делать манипуляции внутри самого шаблона. По сути, в идеале я хотел бы просмотреть эти данные в виде таблицы в шаблоне (столбцы будут месяцами), а затем при нажатии на месяц он расширится до 4 столбцов своих недель, и имя столбца изменится. в дни на этой неделе (например, 11/04/20 - 17/04/20). Спасибо за ваше время и вся помощь приветствуется!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...