如何在django db query中创建动态变量来创建NULL过滤器

问题描述 投票:1回答:2

从Django中的表单获取值后,我正在运行db查询。表单中有很多选项,因此我想将其作为变量传递,但也希望过滤空值。传递给值很好,因为它需要一个字符串,但我无法将变量传递给null过滤器,除非我提到它。如何将值作为变量传递给null过滤器?

parameter = 'temperature'
TempData.objects.all().values(parameter).filter(temperature__isnull=False)
django python-3.x django-models django-forms
2个回答
0
投票

Django Orm可以处理None所以

parameter = 'temperature'
TempData.objects.filter(parameter=None)

应该能够回报你的期望。


0
投票

如果要过滤掉多个参数,

parameters = ['temperature', 'foo', 'bar', 'foo_bar']
null_filters = {"{}__isnull".format(param): True for param in parameters}
TempData.objects.all().values(*parameters).filter(**null_filters)
© www.soinside.com 2019 - 2024. All rights reserved.