【问题标题】:Django UniqueConstraint case insensitive and unaccentedDjango UniqueConstraint 不区分大小写且无重音
【发布时间】:2021-05-03 11:28:13
【问题描述】:

我知道我可以通过使用获得唯一不区分大小写的字段 from django.contrib.postgres.fields import CICharField,但我无法通过类似的方式使其工作

    class Meta:
        constraints = [
            models.UniqueConstraint(
                fields=["name__unaccent"],
                name="unique name",
            ),
        ]

我有UnaccentExtension,但这仍然会引发错误

django.core.exceptions.FieldDoesNotExist: Group has no field named 'name__unaccent'

我做错了吗?它是否有可能实现,我正在寻找什么?

【问题讨论】:

    标签: django django-models django-database


    【解决方案1】:

    您不能在fields 参数中使用__unaccent 访问器等,因为它只接受裸字段名称(在内部映射到真实的数据库列)。

    我不确定您要求的内容是否可行,因为 constraints 必须解析为有效的 SQL 约束,而我看不出有任何方法可以这样做。

    另一种选择是在表单验证时处理此问题(使用__unaccent 执行查询以查看是否已存在任何条目是微不足道的)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 2012-06-15
      • 1970-01-01
      • 2012-06-05
      • 1970-01-01
      • 2011-04-10
      相关资源
      最近更新 更多