在 Django 框架中读取过滤器查询集

Posted

技术标签:

【中文标题】在 Django 框架中读取过滤器查询集【英文标题】:Reading Filter query set in Django framework 【发布时间】:2022-01-22 04:31:15 【问题描述】:

我对 Django 非常陌生,我正在尝试返回通过在 Django 中的特定站点销售汽车所获得的总收入总和。我已经尝试使用 annotate 方法来获取结果。我已经使用 annotate 编写了一个查询集。

mum_data = Cars_Showroom_Filter(request.GET, queryset = Cars.objects.filter(Site__in = ( "Mumbai",)).annotate(price=Sum('price')))


这将返回一个过滤器对象 并且我无法读取它。我尝试使用 qs.count() 但它返回给我整个查询集列表。有人可以帮助我阅读这个特定的查询集值吗

【问题讨论】:

【参考方案1】:

This returns me a filter object <users.filters.Cars_Showroom_Filter object at 0x00000264ABBA2A90>annotate() 返回一个查询集,您可以像这样获得每个个体的总和 通过遍历查询集

for item in queryset:
    item.field__sum

这将在此处为您返回特定字段检查的总和 Sum() 你想要的是aggregate() 这将返回这样的列的总数

mum_data = Cars_Showroom_Filter(request.GET, queryset = Cars.objects.filter(Site__in = ( "Mumbai",)).aggregate(price=Sum('price')))

这将返回这个值

'price__sum': 127183 # this is random value it will return your price total

【讨论】:

我尝试使用 aggregate ,但我面临 'dict' object has no attribute 'model' 错误 你好@NirmalKumar 好吧,实际上你正在使用 djang-filter 库我认为你必须传递一个查询集和我们的示例它只是返回一个字典值 如果你只想显示特定城市的总收入而不是你不必使用 django-filter 你可以从用户并将其传递给提供的查询,它将返回特定城市的收入,如果该城市没有记录,它将返回 0 嗨 Ankit,我必须使用 django 过滤器,因为我将计算年度数据 你可以在不使用 djang-filter 的情况下做到这一点,但如果你想使用它,你必须阅读 djang-filter 文档覆盖查询集,我认为保留 djang-filter 用于年度计算,现在你可以使用这个【参考方案2】:

就这样吧,希望对你有帮助!

queryset = Cars.objects.filter(Site__in = ( "Mumbai",)).annotate(price=Sum('price'))

【讨论】:

您好,感谢您回来。好吧,正常的方法可以正常工作,但我肯定需要通过过滤器 你想通过过滤器得到什么.....你能说清楚吗?

以上是关于在 Django 框架中读取过滤器查询集的主要内容,如果未能解决你的问题,请参考以下文章

Django中模型

Django模型查询集过滤器作为一个函数

django基础知识之模型查询:

Django 数据库操作

django 设计模式/最佳实践:过滤查询集

我想在 Django 中进行两个查询集搜索