Me enfrento a este InvalidRequestError de que mis relaciones entre dos clases no están asignadas correctamente. Esta es una relación de uno (pregunta) a muchos (opción).
from sqlalchemy.ext.declarative import declartive_base Base = declarative_base() class ChoiceModel(Base): __tablename__ = 'choice' id_seq = Sequence('choice_id_seq', metadata=Base.metadata) id = Column(Integer, id_seq, server_default=id_seq.next_value(), primary_key=True, index=True) choice_context = Column(Text, nullable=False) question_id = Column(Integer, ForeignKey('question.id')) question = relationship('QuestionModel', back_populates='choices') class QuestionModel(Base): __tablename__ = 'question' id_seq = Sequence('question_id_seq', metadata=Base.metadata) id = Column(Integer, id_seq, server_default=id_seq.next_value(), primary_key=True, index=True) correct = Column(Boolean, nullable=False) choice_list = Column(ARRAY(Integer)) choices = relationship("ChoiceModel", back_populates='question', cascade="all, delete-orphan")Y el error que estoy recibiendo,
sqlalchemy.exc.InvalidRequestError: When initializing mapper mapped class ChoiceModel->choice, expression 'Question' failed to locate a name ('Question'). If this is a class name, consider adding this relationship() to the <class 'project.core.models.choice_model.ChoiceModel'> class after both dependent classes have been defined. He leído preguntas similares del documento oficial de SQLAlchemy en stackoverflow que la mayoría de ellos usaban un nombre de clase incorrecto o no tenían back_populates .
Mis preguntas son,
¿Debería tener que cambiar el nombre de mis clases, como Choice , Question en lugar de tener un Model de sufijo?
? Si mapeé correctamente, ¿qué causa este error?
He configurado el nombre, la choice y la question de mis tablas de PostgreSQL
* pitón == 3.10
*ubuntu==20.04
*fastapi==0.73.0
*AlquimiaSQL==1.4.31
*posgresql==14.2
¡Gracias por adelantado!