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 字段传递给此方法以避免可能的重复。