2012-09-17 11 views
7

SQLAlchemyとDjango models.pyで書かれたこの単純なテーブルが与えられていると、nullでない場合にUPCをユニークに設定するにはどうすればよいですか? UPCはすべてのアイテムで使用できるわけではありませんが、ユニークでなければなりません。 NULL値を持つSQLAlchemyとDjango

class Products(base): 
    __tablename__ = u'products' 
    id = Column(Integer(), primary_key=True, autoincrement = True) 
    product_name = Column(String(), unique=True, nullable=False) 
    upc = Column(String(), nullable = True) 

そして

class Products(models.Model): 
    id = models.AutoField(primary_key=True) 
    product_name = models.TextField() 
    upc = models.TextField(null=True, blank=True) 

答えて

7

複数の行は、固有の制約のために問題になることはありません。 "値"のみが一意でなければならず、NULLは値ではありません。

あなたが理にかなっている、[OK]を?:

upc = Column(String(), unique=True, nullable=True) 
+2

を試してみました。アプリケーションをどこかで間違えてしまったかもしれないことに気付きましたが、実際には空の文字列を入れて一意性の問題を引き起こす可能性があります。 – MCH

関連する問題