I am getting the following error when trying to create a new document and associated relationship with an array of counterparties.
AttributeError: 'dict' object has no attribute '_sa_instance_state'
I think the issue must exist with my model definition, if I remove "backref="documents" for the counterparties relationship I get the same error, but on the next line as it tries to add the document.
Database Model:
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"
)
Resolver:
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
EDIT:
DocumentCreate
class DocumentBase(BaseModel):
name: str
start_date: datetime.date
end_date: datetime.date
class DocumentCreate(DocumentBase):
counterparties: "list[CounterpartyClean]"