django模型中不区分大小写的Charfield

mmr*_*151 8 django-models case-insensitive

我正在尝试实现名称所在的类别模型unique=True,但实际上我仍然可以添加具有不同情况的相同类别名称.

即我有一个名为食物的类别我仍然可以添加食物,食物,fOod,FOOd

他们背后的理念是什么?或者这是一项正在进行的工作.

在现实世界中,如果我想到分类食品,它将永远是食物,无论它曾经提到过它的情况.

提前谢谢你看看这个.

mmr*_*151 17

回答我自己的问题:

我发现我可以在我的模型上使用干净的方法.所以我补充道

class Category(models.Model):
    name = models.CharField(max_length=200, unique=True)

    def clean(self):
        self.name = self.name.capitalize()
Run Code Online (Sandbox Code Playgroud)

它正在大写第一个字母,然后由save方法处理,该方法调用validate_unique方法来引发错误.