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
次。