【问题标题】:How to create dynamic variable to create NULL filter in django db query如何在 django db 查询中创建动态变量以创建 NULL 过滤器
【发布时间】:2019-03-27 03:05:55
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    如果你有多个参数要过滤掉,

    parameters = ['temperature', 'foo', 'bar', 'foo_bar']
    null_filters = {"{}__isnull".format(param): True for param in parameters}
    TempData.objects.all().values(*parameters).filter(**null_filters)

    【讨论】:

      【解决方案2】:

      Django Orm可以处理None所以

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

      应该能够返回您所期望的。

      【讨论】:

      • 我试过这个: TempData.objects.filter(parameter=None) 它将参数作为字段而不是变量并返回此错误:无法将关键字“参数”解析为字段。选择是:...
      猜你喜欢
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 2019-07-11
      • 1970-01-01
      • 1970-01-01
      • 2019-12-16
      • 1970-01-01
      • 2013-03-25
      相关资源
      最近更新 更多