【问题标题】:Wildcard in Django (Objects.filter)Django 中的通配符(Objects.filter)
【发布时间】:2009-08-24 14:28:06
【问题描述】:

在 Django 中是否有通配符可以在 Objects.filter 中使用?

例如,是否有一个字符相当于这样做:

Prices.objects.filter(a = example1
                     ,b = example2
                    #,c = example3
)

即而不是注释掉 c,我能不能把 c = WILDCARD 或 c = *... 你明白了。谢谢。

编辑:例如,如果您有大量可以搜索的属性并且您只想搜索少数几个,那么您将不会拥有大量执行这些特定搜索的功能。我需要某种字符来告诉 Django,然后告诉 SQL“这个字段无关紧要,我想要这里的所有内容”......不包括该字段(如示例中所示)只是创建了一个函数库。

【问题讨论】:

    标签: django


    【解决方案1】:

    尝试使用containsicontains

    这是一个例子:

    Foo.objects.filter(name__icontains = 'hello') #fetches all whose name field contains 'hello'
    

    【讨论】:

      【解决方案2】:

      唯一要做的就是动态过滤的属性名称和值的字典:

      filters = {"a": "example1", "b": "example2", "c": "example3" }
      prices = Prices.objects.filter(**filters)
      

      然后您在运行时设置过滤器字典,根据需要添加或删除键/值对。 **filters 是一个关键字参数。在这里查看更多信息:

      http://www.nomadjourney.com/2009/04/dynamic-django-queries-with-kwargs/

      【讨论】:

      • 还没搞定! objects.filter 如何知道将键放入模型的何处?
      猜你喜欢
      • 1970-01-01
      • 2021-05-15
      • 2011-08-22
      • 2011-11-29
      • 2019-09-11
      • 2018-07-14
      • 2013-12-14
      • 2011-07-10
      • 1970-01-01
      相关资源
      最近更新 更多