Django:如何产生一个月的几周(从一个月的第一天到下一个星期五),然后从星期六到下一个星期五,直到该月结束?

时间:2020-04-04 12:22:41

标签: javascript python django

我正在研究Django项目,该项目包括预测即将到来的应付帐款(AP)和应收帐款(AR)。但是,我偶然发现了一个问题,因为我不知道如何生成特定月份的几周。例如,对于4月,我希望将日期分为以下日期:01/04/20-10/04/20(下一个星期五),11/04/20-17/04/20(下个星期五)等等)。在每个星期内,将添加一个字段“金额”以显示该周内预期要支付/接收的总金额。到目前为止,这是我的代码,我设法按月对查询集进行分组,并按月对“金额”字段进行分组。但是,由于Django的ExtractWeek函数每年工作,因此我不太确定如何按一个月的星期对它进行分组。

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)。谢谢您的宝贵时间,我们将为您提供所有帮助!

0 个答案:

没有答案