Добавление нескольких внешних ключей из одной модели (FastAPI и SqlAlchemy)Python

Программы на Python
Ответить
Anonymous
 Добавление нескольких внешних ключей из одной модели (FastAPI и SqlAlchemy)

Сообщение Anonymous »

Я пытаюсь иметь два внешних ключа из таблицы пользователей внутри таблицы запретов. Вот как я это сделал:

Код: Выделить всё

class Ban(Base):
__tablename__ = "ban"

ban_id = Column(Integer, primary_key=True, index=True)
poll_owner_id = Column(Integer)
banned_by = Column(String ,  ForeignKey('user.username', ondelete='CASCADE', ), unique=True)
user_id = Column(Integer,  ForeignKey('user.user_id', ondelete='CASCADE', ))
updated_at = Column(DateTime)
create_at = Column(DateTime)

ban_to_user = relationship("User", back_populates='user_to_ban', cascade='all, delete')
и таблица пользователей:

Код: Выделить всё

class User(Base):
__tablename__ = "user"

user_id = Column(Integer, primary_key=True, index=True)
username = Column(String, unique=True)
email = Column(String)
create_at = Column(DateTime)
updated_at = Column(DateTime)

user_to_ban = relationship("Ban", back_populates='ban_to_user', cascade='all, delete')
Когда я пытаюсь выполнить запрос для получения всех пользователей следующим образом:

Код: Выделить всё

@router.get('/all')
async def get_all_users(db:Session = Depends(get_db)):
return db.query(models.User).all()
Я получаю следующую ошибку:

Код: Выделить всё

sqlalchemy.exc.InvalidRequestError: One or more mappers failed to initialize - can't proceed with initialization of other mappers. Triggering mapper: 'mapped class User->user'. Origina
l exception was: Could not determine join condition between parent/child tables on relationship User.user_to_ban - there are multiple foreign key paths linking the tables.  Specify the 'foreign_keys' argument, providing a list of those columns which should be counted as containing a foreign key reference to the parent table.
Как вы можете видеть, я установил отношения между ними, но там указано, что между ними есть проблема. При необходимости я могу показать вам, как я выполнил миграцию своей базы данных с помощью перегонного куба, если это возможная причина, или есть ли более чистый и лучший способ сделать это.

Подробнее здесь: https://stackoverflow.com/questions/750 ... qlalechemy
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»