【问题标题】:QUERYSET: How can I filter by field in a list (case insensitive)QUERYSET:如何按列表中的字段过滤(不区分大小写)
【发布时间】:2020-09-23 06:34:28
【问题描述】:

我想使用 __in 过滤字段,但我也希望它在传递给查询时不区分大小写

这是我尝试过的:

fields = ['Banana','Water Melon','grapes']

MyModel.objects.filter(field__in__icontains=fields).values()

并返回一个错误(当然)。

不支持在 CharField 中查找“in”或加入未加入的字段 允许,也许你的意思是在?

我希望它是这样的。任何帮助/启发将不胜感激,

提前感谢您的帮助

【问题讨论】:

  • 你可以使用 iexact
  • 但是我如何过滤一个列表呢?
  • django orm 不支持

标签: python django list django-queryset


【解决方案1】:

我不认为 Django ORM 支持类似的东西,但是使用 UNION 可以进行黑客攻击。

尚未对其进行测试,但尝试通过执行类似的操作来冲击大脑:

fruits = ['Banana', 'mango', 'Ginger']
queryset = Fruit.objects.all()
for fruit in fruits:
    queryset = queryset.union(Fruit.objects.filter(name__icontains=fruit)

【讨论】:

    猜你喜欢
    • 2016-03-15
    • 1970-01-01
    • 2018-02-19
    • 2023-04-01
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 2013-08-07
    相关资源
    最近更新 更多