2012-09-17 14 views
7

Dada esta sencilla tabla escrita en SQLAlchemy y Django models.py, ¿cómo podría configurar UPC como único si no nulo? UPC no estará disponible para todos los artículos, pero si debe ser único.Único si no es nulo SQLAlchemy y 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) 

Y

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

Respuesta

7

múltiples filas con valores NULL no debería ser un problema para la restricción única. Solo los "valores" deben ser únicos, NULL no tiene valor.

Ha intentado ?:

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

Ok, eso tiene sentido. Me di cuenta de que podía haber cometido un error en alguna parte de la aplicación en la que quería tener nulo, pero en realidad podría estar poniendo una cadena vacía para que pudiera causar problemas de exclusividad. – MCH