как отфильтровать год из datefield в django

#django #chart.js #django-filters

#django #chart.js #django-фильтры

Вопрос:

В принципе, я хочу использовать ‘chartjs’ для отображения «Кластерной гистограммы» со следующими параметрами по годам

Общая сумма Полученная сумма Оставшаяся сумма

Я хочу извлечь данные из базы данных и отобразить их на графике, я сохранил данные всех вышеуказанных полей 3 в одной таблице для каждой даты, и я хочу также извлечь год из поля даты.

Главное, как отобразить кластеризованную гистограмму, извлекая данные из базы данных за каждый год.

 
class Allinvoice(models.Model):
    company_choice = (
        ('VT_India', 'VT_India'),
        ('VT_USA', 'VT_USA'),
    )
    company = models.CharField(
        max_length=30, blank=True, null=True, choices=company_choice)
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
    project = models.ForeignKey(Allproject, on_delete=models.CASCADE)

    invoice_title = models.CharField(max_length=15)

    invoice_id = models.IntegerField(primary_key=True)
    currency = models.ForeignKey(Currency, on_delete=models.CASCADE)
    invoice_amount = models.IntegerField()
    invoice_date = models.DateField(
        blank=True, null=True)
    invoice_duedate = models.DateField(
        blank=True, null=True)

    invoice_description = models.TextField()

    def __str__(self):
        return str(self.invoice_id)

class Paymentdete(models.Model):
    payment_id = models.IntegerField(primary_key=True)
    invoice = models.ForeignKey(
        Allinvoice, on_delete=models.CASCADE)
    total_amount = models.IntegerField()
    amountreceived = models.IntegerField()
    amount_left = models.IntegerField()
    currency = models.ForeignKey(Currency, on_delete=models.CASCADE, null=True)
    date = models.DateField(
        blank=True, null=True)
    paymentmethod = models.ForeignKey(
        Allpaymentmethod, on_delete=models.CASCADE)

    def __str__(self):
        return str(self.payment_id)


 

Итак, выше приведен код моих 2 моделей.Итак, я хочу получить общее количество всех данных за год, например

за 2019 год = общая сумма, полученная сумма и оставшаяся сумма на 2020 год = Общая сумма, полученная сумма и оставшаяся сумма … и т.д…

для всех лет в виде кластеризованной гистограммы

Ответ №1:

Вы делаете это так для поля с именем date :

 dates = Paymentdete.objects.filter(date__year='2021')