Django Model.objects.get(...) 不区分大小写
Django Model.objects.get(...) case-insensitivity
我正在开发一个字典应用程序,我有一个 Expression
模型定义如下:
class Expression(models.Model):
expression = models.CharField()
在我的一个观点中,我正在使用 Expression.objects.get_or_create(expression=expression)
。
重要的是,我希望“表达式”与数据库中所有现有 Expression
对象之间的比较不区分大小写。
换句话说,尽管这不是有效的语法,但我希望我的搜索逻辑是:Expression.objects.get_or_create(expression.lower()=expression.lower())
我怎样才能做到这一点?
您可以进行 case-insensitive 过滤,如下所示:
Expression.objects.get_or_create(expression__iexact=expression.lower())
查看 documentation 以查找其他字段。
注意: get_or_create
方法会由于竞争条件而在数据库中创建重复项。请确保将 unique 字段或 unique 字段传递给此方法以避免可能的重复。
我正在开发一个字典应用程序,我有一个 Expression
模型定义如下:
class Expression(models.Model):
expression = models.CharField()
在我的一个观点中,我正在使用 Expression.objects.get_or_create(expression=expression)
。
重要的是,我希望“表达式”与数据库中所有现有 Expression
对象之间的比较不区分大小写。
换句话说,尽管这不是有效的语法,但我希望我的搜索逻辑是:Expression.objects.get_or_create(expression.lower()=expression.lower())
我怎样才能做到这一点?
您可以进行 case-insensitive 过滤,如下所示:
Expression.objects.get_or_create(expression__iexact=expression.lower())
查看 documentation 以查找其他字段。
注意: get_or_create
方法会由于竞争条件而在数据库中创建重复项。请确保将 unique 字段或 unique 字段传递给此方法以避免可能的重复。