Python 仅当给定值时才使用Django过滤器

Python 仅当给定值时才使用Django过滤器,python,django,database,filter,Python,Django,Database,Filter,我想得到每个国家的网站数量。现在,如果没有给出国家,那么所有国家的网站数量应该是结果。我的查询如下所示: Devices = GatewayDevice.objects.prefetch_related("model").filter( model__site__country=country, end_date=None ) 在执行查询之前,我可以检查参数country是否为null,并给出它和其他值,如示例ALL(不起作用)。我该怎么办 最简单的方法

我想得到每个国家的网站数量。现在,如果没有给出国家,那么所有国家的网站数量应该是结果。我的查询如下所示:

Devices = GatewayDevice.objects.prefetch_related("model").filter(
            model__site__country=country, end_date=None
        )

在执行查询之前,我可以检查参数country是否为null,并给出它和其他值,如示例ALL(不起作用)。我该怎么办

最简单的方法就是使用
if
语句:

if country is None:
    Devices = GatewayDevice.objects.prefetch_related("model").filter(end_date=None)
else:
    Devices = GatewayDevice.objects.prefetch_related("model").filter(
            model__site__country=country, end_date=None
        )

如果没有给出国家/地区,您需要返回GatewayDevice的所有对象,对吗?类似这样,这种方法的缺点是,您必须检查所有
N
fields@ArakkalAbuN个字段?用于检查
国家/地区
结束日期
字段1
。。。并且
field\u N
Yes,如果循环,则需要写入
N
次。