如何结合.values()方法过滤查询集,使其仅包含键和传递参数的值

时间:2019-07-15 09:01:54

标签: django-models django-queryset django-filter

我有一个如下查询集:

<QuerySet [{'year': 2019}, {'year': 2019}, {'year': 2012}]>

我想过滤它,使其仅显示特定年份的年份。

这是我的方法:

@api_view()
def buildingGroupYear(request, pk, year):

    passed_year = str(year)
    building_group_object = get_object_or_404(BuildingGroup, id=pk)

    buildings = building_group_object.buildings.all()

    for item in buildings:
        demand_heat_item = item.demandheat_set.all().values('year')
        print(demand_heat_item)

    return Response(demand_heat_item)

demand_heat_item是查询集。现在,我想将passed_year作为参数传递并进行相应的过滤。

我尝试了F和Q表达式,也尝试使用__gt进行过滤,但是无法使其正常工作。

我也更喜欢使用.values()方法,因为我需要它可以JSON序列化。

我尝试过这样:

        demand_heat_item = item.demandheat_set.get(year__exact(passed_year))


and so: 

        demand_heat_item = item.demandheat_set.filter(year__gte(passed_year))

and so: 


        demand_heat_item = item.demandheat_set.filter(year=F(passed_year))



and so 

        demand_heat_item = item.demandheat_set.filter(year=Q(passed_year))

非常感谢您的帮助!在此先感谢!

0 个答案:

没有答案