У меня есть объект Category, подобный этому:
def parent_default(context):
''' default parent id if the name is not root '''
id_ = None
if context.current_parameters['name'] != u'root' :
id_ = 1
return id_
class Category(Base):
''' Class representing a product category. '''
__tablename__ = "CATEGORY"
id = Column(Integer, primary_key=True)
name = Column(Unicode(50), nullable=False)
#self-referential mapper
parent_id = Column(Integer, ForeignKey('CATEGORY.id'), default=parent_default)
products = relationship("Product", backref="products")
parent = relationship('Category', remote_side=[id], backref='sub_categories')
__table_args__ = (
UniqueConstraint('parent_id', 'name'),
)
Проблема, с которой я сталкиваюсь, заключается в том, что я могу создать два «корневых» объекта с None «parent_id», кажется, что UniqueConstraint не делает «t применить к None 'parent_id' ?.В идеале должен быть только один объект с None parent_id.Должно быть, я что-то здесь упускаю.