如何创建动态变量以在Django DB查询中创建NULL过滤器

时间:2019-03-27 03:05:55

标签: django python-3.x django-models django-forms

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

parameter = 'temperature'
TempData.objects.all().values(parameter).filter(temperature__isnull=False)

2 个答案:

答案 0 :(得分:0)

Django Orm可以处理None所以

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

应该能够返回您的期望。

答案 1 :(得分: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)