【问题标题】:How can I do to do some specific filter using Django?如何使用 Django 做一些特定的过滤器?
【发布时间】:2020-11-12 23:43:09
【问题描述】:

我正在使用 Django,我想做一些特定的过滤器。让我们举个例子:

MyTable.objects.filter(number=3)

这个查询将返回所有符合以下条件的条目number=3,但我想要的是这样的:

MyTable.objects.filter(number='all')

在这种情况下,我将获得所有条目。我知道我可以做这样的事情:

MyTable.objects.all()

但我想只使用过滤器来做到这一点。

你能帮帮我吗?

非常感谢!

【问题讨论】:

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


    【解决方案1】:

    您在视图中执行此操作,例如:

    mynumber = '3'  # ← can be '3', 'all', 3, 42, etc.
    
    qs = MyTable.objects.all()
    if mynumber != 'all':
        qs = qs.filter(number=mynumber)

    所以在if 主体之后,如果mynumber'all',它将采用所有 MyTable 对象,否则,它将相应地过滤数字。因此,您可以继续使用qs

    由于查询集是惰性,它不会从数据库中获取所有MyTable 对象。只要您不遍历qs,或获取len(…) 等,这只是一个承诺,它将执行查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多