我怎么能得到元素的名称,尽管文本寄存器。例如,在我的模型中,我有一个user_name等于“hello world”的元素,我想得到这个元素。于是我写道:
User.objects.get(user_name=name)
如果name等于“hello world”,则可以工作,但如果name等于“Hello World”或“hElLO wOrLD”,则不工作。我可以使用name.lower(),但是如果模型中的user_name等于“HELLO WORLD”,那么它就不能再工作了。
2q5ifsrm1#
你使用**__iexact**查找[Django-doc]:
__iexact
User.objects.get(user_name__iexact=name)
我可以使用name.lower(),但如果模型中的user_name等于"HELLO WORLD",那么它就无法再次工作。即使这样做可行,一个常见的误解是,在两个操作数上调用.lower()会执行不区分大小写的匹配。对于许多字符来说,它们没有小写/大写变体,并且在某些语言中,当两个项目相等时的规则是“复杂的”。一个使用**str.casefold(…)**[Python-doc]将其转换为变体,以执行不区分大小写的匹配。
name.lower()
user_name
"HELLO WORLD"
.lower()
str.casefold(…)
1条答案
按热度按时间2q5ifsrm1#
你使用**
__iexact
**查找[Django-doc]:我可以使用
name.lower()
,但如果模型中的user_name
等于"HELLO WORLD"
,那么它就无法再次工作。即使这样做可行,一个常见的误解是,在两个操作数上调用
.lower()
会执行不区分大小写的匹配。对于许多字符来说,它们没有小写/大写变体,并且在某些语言中,当两个项目相等时的规则是“复杂的”。一个使用**str.casefold(…)
**[Python-doc]将其转换为变体,以执行不区分大小写的匹配。