SQLAlchemy에서 다중 레벨 다형성을 가질 수 있습니까? 다음 예는 다음과 같습니다SQLAlchemy에서 다단계 다형성이 가능합니까?
class Entity(Base):
__tablename__ = 'entities'
id = Column(Integer, primary_key=True)
created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
entity_type = Column(Unicode(20), nullable=False)
__mapper_args__ = {'polymorphic_on': entity_type}
class File(Entity):
__tablename__ = 'files'
id = Column(None, ForeignKey('entities.id'), primary_key=True)
filepath = Column(Unicode(255), nullable=False)
file_type = Column(Unicode(20), nullable=False)
__mapper_args__ = {'polymorphic_identity': u'file', 'polymorphic_on': file_type)
class Image(File):
__mapper_args__ = {'polymorphic_identity': u'image'}
__tablename__ = 'images'
id = Column(None, ForeignKey('files.id'), primary_key=True)
width = Column(Integer)
height = Column(Integer)
내가 Base.metadata.create_all()
전화, SQLAlchemy의 다음과 같은 오류가 발생합니다 :
IntegrityError: (IntegrityError) entities.entity_type may not be NULL`.
이 오류가 나는 Image
모델과 File
의 polymorphic_on
키를 제거하면 사라집니다.
무엇을 제공합니까?
선언적 레이어가 없으면이 작업을 수행하는 것이 더 바람직 할 수 있습니다. – joeforker