我如何按名称检索Django模型元素,而不考虑文本大小写?

fzwojiic  于 2023-06-07  发布在  Go
关注(0)|答案(1)|浏览(156)

我怎么能得到元素的名称,尽管文本寄存器。
例如,在我的模型中,我有一个user_name等于“hello world”的元素,我想得到这个元素。
于是我写道:

User.objects.get(user_name=name)

如果name等于“hello world”,则可以工作,但如果name等于“Hello World”或“hElLO wOrLD”,则不工作。
我可以使用name.lower(),但是如果模型中的user_name等于“HELLO WORLD”,那么它就不能再工作了。

2q5ifsrm

2q5ifsrm1#

你使用**__iexact**查找[Django-doc]:

User.objects.get(user_name__iexact=name)

我可以使用name.lower(),但如果模型中的user_name等于"HELLO WORLD",那么它就无法再次工作。
即使这样做可行,一个常见的误解是,在两个操作数上调用.lower()会执行不区分大小写的匹配。对于许多字符来说,它们没有小写/大写变体,并且在某些语言中,当两个项目相等时的规则是“复杂的”。一个使用**str.casefold(…)**[Python-doc]将其转换为变体,以执行不区分大小写的匹配。

相关问题