【发布时间】:2022-11-06 17:22:52
【问题描述】:
尝试创建新文档以及与一组交易对手的关联关系时出现以下错误。
AttributeError:“dict”对象没有属性“_sa_instance_state”
我认为这个问题一定存在于我的模型定义中,如果我为交易对手关系删除“backref="documents”,我会得到同样的错误,但在下一行尝试添加文档时。
数据库模型:
documents_counterparties = Table( "documents_counterparties", Base.metadata, Column("document_id", ForeignKey("documents.id"), primary_key=True), Column("counterparty_id", ForeignKey( "counterparties.id"), primary_key=True) ) class Document(Base): __tablename__ = "documents" id = Column(Integer, primary_key=True, index=True) name = Column(String, index=True) start_date = Column(Date) end_date = Column(Date) owner_id = Column(Integer, ForeignKey("users.id")) owner = relationship("User", back_populates="documents") counterparties = relationship( "Counterparty", secondary=documents_counterparties, backref="documents" )解析器:
def create_document(db: Session, document: DocumentCreate, user_id: int): db_document = models.Document(**document.dict(), owner_id=user_id) #<- errors here db.add(db_document) db.commit() db.refresh(db_document) return db_document编辑:
文档创建
class DocumentBase(BaseModel): name: str start_date: datetime.date end_date: datetime.date class DocumentCreate(DocumentBase): counterparties: "list[CounterpartyClean]"
【问题讨论】:
-
你可以添加文档创建类吗?
-
您的
counterparties是字典列表,而不是 SQLAlchemy 对象列表。 SQLAlchemy 不知道如何存储字典。
标签: python sqlalchemy fastapi