Python Alchemy multiple relationship

Viewed 37

I have a one to many relationship that returns an error each time I try to call it.

USER Model:

 from config import db
 from models.mixins import *
 from models.decorators import *
 import uuid
 from sqlalchemy import Column, String, ForeignKey
 from sqlalchemy.orm import relationship
 from sqlalchemy.sql import func
 from sqlalchemy.dialects import mysql

class User(db.Base):
  __tablename__ = 'user'

  id = Column(GUID(), primary_key=True, default=uuid.uuid4, unique=True)
  name = Column(String(255), nullable=True)
  address_to = Column(GUID(), ForeignKey('addess.id'), nullable=True)
  address_from = Column(GUID(), ForeignKey('address.id'), nullable=True)

 u_address_from = relationship('Address',  foreign_keys='address_from', 
  back_populates='user_address_from')
 u_address_to = relationship('Address',  foreign_keys='address_to', 
  back_populates='user_address_to')

Address Model:

from config import db
from models.decorators import *
import uuid
from sqlalchemy import Column, String, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from sqlalchemy.dialects import mysql

class Address(db.Base):
  __tablename__ = 'address'

  id = Column(GUID(), primary_key=True, default=uuid.uuid4, unique=True)
  street = Column(String(64), nullable=False)
  city = Column(String(64), nullable=False)

  user_address_from = relationship('Address',  foreign_keys='User.address_from', 
    back_populates='u_address_from')
  address_to = relationship('Address',  foreign_keys='User.address_to', 
    back_populates='u_address_to')

Function to get user

class GetUser:
  def user(user_id: str):
    with db.Session() as session:
        user = session.query(User).where(
            User.id == user_id,
            User.deleted_at.is_(None)
            ).first()
        
        return user

The error I get is:

[ERROR] InvalidRequestError: When initializing mapper mapped class User->user, expression 'address_from' failed to locate a name ("name 'address_from' is not defined"). If this is a class name, consider adding this relationship() to the <class 'user.User'> class after both dependent classes have been defined.

0 Answers
Related