唯一字段不区分大小写约束

Unique field case insensitive constraint

我试图确保所有标签在转换为小写时都是唯一的。但是,当我 运行 在以下模型上迁移时,我收到以下错误:


api.Tag: (models.E012) 'constraints' refers to the nonexistent field 'Lower(F(name))'.

class Tag(models.Model):
  name = models.CharField(max_length=30)


  class Meta:
    constraints = [
        models.UniqueConstraint(
            fields=[Lower('name')],
            name='unique_name'
        ),
    ]

由于, you can work with expressions in a UniqueConstraint [Django-doc],所以:

class Tag(models.Model):
    name = models.CharField(max_length=30)
    
    class Meta:
        constraints = [
            models.UniqueConstraint(
                <strong>Lower('name')</strong>,
                name='unique_name'
            )
        ]