1
私はこのようなカテゴリーのオブジェクトがあります。SQLAlchemyの自己参照PARENT_IDジレンマ
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'),
)
を私が午前問題は、私はなし「PARENT_ID」で2「ルート」オブジェクトを作成することができだということで、それはそうですUniqueConstraintはNone 'parent_id'には適用されません。理想的には、parent_idがNoneのオブジェクトは1つだけです。私はここで何かを逃しているに違いない。
引数には影響しませんが、 'NULL = NULL'はfalseでもtrueでもありません。 –
@ypercube:fixed。 null = nullがnullであると書きましたが、最終バージョンでは何とかそれを元に戻しました。 – SingleNegationElimination
ありがとう! Null = Nullは真実ではないので私を捨てた。 – Lloyd