当前年份的 Django 查询集

发布于 2025-01-18 09:12:07 字数 607 浏览 2 评论 0原文

我编写了查询以从数据库中获取一些内容并在我的网站上显示该查询正在从数据库获取所有数据,但是如果我只想获取特定于当前年份的数据怎么办

def get(self, request, *args, **kwargs):
    filters = self.get_filters()

    result = Model.objects.all().filter(*filters).distinct().aggregate(
        t=Sum('t'),
        b=Sum('b'),
    )

    result2 = Model.objects.all().filter(*filters).distinct().aggregate(
        past_due=Sum('balance', filter=Q(due_date__lt=timezone.now()))
    )

    zero = Decimal('0.00')

    total = result['t'] or zero
    balance = result['b'] or zero
    past_due = result2['past_due'] or zero
    amount_received = t - b

I have my query written to get some thing from database and display on my website that query is getting all the data from db but what if i want to get the data particular to current year only

def get(self, request, *args, **kwargs):
    filters = self.get_filters()

    result = Model.objects.all().filter(*filters).distinct().aggregate(
        t=Sum('t'),
        b=Sum('b'),
    )

    result2 = Model.objects.all().filter(*filters).distinct().aggregate(
        past_due=Sum('balance', filter=Q(due_date__lt=timezone.now()))
    )

    zero = Decimal('0.00')

    total = result['t'] or zero
    balance = result['b'] or zero
    past_due = result2['past_due'] or zero
    amount_received = t - b

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

窗影残 2025-01-25 09:12:07

我认为filter = q(due_date__year = dateTime.now()。date()。年)应该对您有用,如果我正确理解您的问题。

I think filter=Q(due_date__year=datetime.now().date().year) should work for you, if I understand your question correctly.

彩扇题诗 2025-01-25 09:12:07

这对我有用

result = Model.objects.all().filter(*filters, created__year=datetime.now().year).distinct().aggregate(
            t=Sum('t'),
            b=Sum('b'),
        )
    
        result2 = Model.objects.all().filter(*filters, created__year=datetime.now().year).distinct().aggregate(
            past_due=Sum('balance', filter=Q(due_date__lt=timezone.now()))
        )

This worked for me

result = Model.objects.all().filter(*filters, created__year=datetime.now().year).distinct().aggregate(
            t=Sum('t'),
            b=Sum('b'),
        )
    
        result2 = Model.objects.all().filter(*filters, created__year=datetime.now().year).distinct().aggregate(
            past_due=Sum('balance', filter=Q(due_date__lt=timezone.now()))
        )
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文