2012-02-28 76 views
5

我想实现一个类别模型,其中名称有unique=True, 但实际上我仍然可以添加具有不同情况的相同类别名称。django模型不区分大小写Charfield

即我有一个名为食品 我仍然能够增加食品,粮食,食品类,食品类

是其背后的任何理念?或者这是一项正在进行的工作。

因为在现实世界中,如果我想到类别食品,它总是食物,不管它曾经提及过自己的情况。

预先感谢您看看这个。

回答

14

要回答我的问题:

我发现我可以对我的模型清洁方法。所以我添加

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

    def clean(self): 
     self.name = self.name.capitalize() 

它正利用的第一个字母,然后由该save方法,它调用的方法validate_unique提高错误处理。

+0

这对我来说非常有用。谢谢.. :) – suhailvs 2013-10-05 04:41:59

+0

2017:工作得很好! – zerohedge 2017-11-08 08:13:01

-1

将列设置为不区分大小写的排序规则应解决此问题。您可能需要在SQL级别执行此操作。

+1

您的意思是将列设置为“区分大小写”?问题是如何在Django中做到这一点。 – Sarang 2015-05-14 09:22:16