如何在不区分大小写的情况下执行 model.objects.get(**kwargs)

Posted

技术标签:

【中文标题】如何在不区分大小写的情况下执行 model.objects.get(**kwargs)【英文标题】:How to perform model.objects.get(**kwargs) with case insensitive 【发布时间】:2019-06-26 09:40:49 【问题描述】:

我想通过以不区分大小写的方式使用字典来获取我的一个 Django 模型的实例。目前我正在使用:

my_model.objects.get(**dictionary)

但是,如果我的字典中的内容与实例的字段之间存在小写/大写的差异,我不会得到该实例。

你认为有一种干净的方式来执行这个操作吗?

【问题讨论】:

不,实际上 Django 不知道你如何调用它。如果您调用some_function(**some_dict),Python 将简单地将其替换为some_function(key1=val1, key2=val2) 等。这只是参数解包。 感谢您和这个解决方案:***.com/questions/11743207/…,我找到了方法。我只需将字典的键从“key”重命名为“key__iexact”,它就可以工作了!跨度> 【参考方案1】:

Django 使用WHERE 过滤器完全从您提供的字典的键中加载对象。由您提供field lookups;你可以使用iexact field lookup type,但你需要在文本字段上使用它。

所以如果你想匹配一个特定的字符串字段,不区分大小写,将__iexact添加到dictionary中的键;例如'foo': 'bar' 变为 'foo__iexact': 'bar'

【讨论】:

以上是关于如何在不区分大小写的情况下执行 model.objects.get(**kwargs)的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在不使用子项的情况下使 Firebase 搜索查询不区分大小写? [复制]

如何实现 Django 不区分大小写的模型字段?

如何在android中解析查询搜索案例不敏感?

C# HttpWebRequest - 如何在不下载的情况下区分 HTML 和 XML 页面?

哈希表调整大小:我们如何在不知道密钥的情况下做到这一点?

如何在不知道数据库总行数的情况下执行自定义分页