2012-02-28 22 views
5

名前がunique=True, のカテゴリモデルを実現しようとしていますが、事実上同じカテゴリ名に異なるケースを追加できます。大文字と小文字を区別しないCharfield djangoモデル

はつまり、私は食品 と呼ばれるカテゴリが、私はまだ食べ物、食品、食品を追加することができていたが、食品

は、この背後にある彼らのいずれかの哲学ですか?それは進行中の作業です。

私がカテゴリーフードを考えると、現実世界では、それが言及していたにもかかわらず、いつも食糧になります。

ありがとうございました。

答えて

14

自分の質問に答えるために:私は私のモデルにクリーンな方法を持つことができ、私を発見した

を。だから私はそれは、エラーを上げるvalidate_uniqueメソッドを呼び出しsave方法によって処理された最初の文字を、大文字にされ

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

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

を追加しました。

+0

これは私には非常に便利です。ありがとう.. :) – suhailvs

+0

2017:非常にうまく動作します! – zerohedge

-1

大文字小文字を区別しない照合に列を設定すると、これが解決されます。あなたはSQLレベルでそれを行う必要があります。

+1

「大文字と小文字を区別する」列を設定することを意味しますか?問題は、Djangoでこれを行う方法です。 – Sarang

関連する問題