Как отфильтровать по месяцам из шаблона
Я пытаюсь направить поле datetime по месяцу и году. Хотя никто толком не может сказать, почему при вводе и месяца, и года я получаю обратно свободный возвращаемый набор.
Модель
class SpareParts(models.Model):
vehicle = models.ForeignKey(Vehicle, on_delete=models.CASCADE)
amount = models.IntegerField(blank=False, null=False)
date = models.DateField(blank=False, null=False)
Я хочу фильтровать на основе транспортного средства и месяца и вот мое представление VIEWS.py
def view_spare(request):
sparepart = SpareParts.objects.all()
vehicle_filter = request.POST.get('vehicle') # get the value of the date field
month_filter = request.POST.get('month') # get the value of the date field
if vehicle_filter:
if month_filter:
sparepart = sparepart.filter(vehicle=vehicle_filter,date__month=month_filter).aggregate(Sum('amount'))
return render(request,'invoice/spare_parts_list.html',{'sparepart':sparepart})
и я хочу вывести сумму за весь месяц в шаблон
date__month является целым числом, а согласно вашему объяснению "месяц" является полем даты. Поэтому вы не можете их сравнивать. Вы должны вычислить месяц и год вашей вводимой даты:
Сделайте следующее:
import datetime
month_filter = datetime.datetime.strptime(self.request.POST.get('month'),"%d/%m/%Y").date() #Change with the formar that you are using.
И:
sparepart = sparepart.filter(vehicle=vehicle_filter,date__month=month_filter.month, date__year=month_filter.year).aggregate(Sum('amount'))