Django 过滤器查询 - 忽略参数是否为空

Jay*_*eth 2 django django-models django-queryset

在我的 django APIView 类中,我通过以下方式从 POST 中获取月份和年份:

month = request_data.get("month")
year = request_data.get("year")
Run Code Online (Sandbox Code Playgroud)

然后我调用一个查询来获取月==月和年==年的数据。

queryset =  Expenses.objects.filter(month=month, year=year)
Run Code Online (Sandbox Code Playgroud)

如果我发布月份和年份,这完全有效。但我想做以下事情:

如果月份为空,我想获取发布年份中的每条记录。目前,如果我将月份发布为空,那么我不会得到任何结果。我知道这可以通过简单的 if-else 来排序,但我想知道是否有更简单的方法。

Dom*_*kuš 6

你考虑过这个吗?

filters = {'year': request_data.get("year")}

month = request_data.get("month")
if month:
    filters['month'] = month

queryset =  Expenses.objects.filter(**filters)
Run Code Online (Sandbox Code Playgroud)