如何在不区分大小写的情况下执行 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 搜索查询不区分大小写? [复制]