2012-02-28 80 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