AmbigousForeignKeysError в SQLAlchemy: разрешение отношений внешнего ключа в моделях FlaskPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 AmbigousForeignKeysError в SQLAlchemy: разрешение отношений внешнего ключа в моделях Flask

Сообщение Anonymous »

У меня возникла проблема с SQLAlchemy в моем приложении Flask. У меня есть две модели: User и AssignmentReminder. Обе модели имеют отношения внешнего ключа со столбцом user.id в модели User, но при попытке запустить приложение я получаю следующую ошибку:

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

sqlalchemy.exc.AmbiguousForeignKeysError: Could not determine join condition between parent/child tables on relationship User.assignments
Модели:

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

class User(db.Model):
__tablename__ = 'users'

id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
assignments = db.relationship('AssignmentReminder', backref='user', lazy=True)

class AssignmentReminder(db.Model):
__tablename__ = 'assignments'

id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(200), nullable=False)
description = db.Column(db.Text, nullable=False)
due_date = db.Column(db.Date, nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
recipient_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=True)

creator = db.relationship('User', back_populates='assignments')
recipient = db.relationship('User', back_populates='assignments_received')
Проблема:
Я получаю неоднозначный ForeignKeySerror , потому что SQLalchemy не может определить, какой внешний ключ использовать для отношений между пользователем и AssignmentReminder. И user_id, и получатель_id относятся к пользователям.id, но SQLAlchemy не знает, какой из них использовать для связи назначений.
< h3>Что я пробовал:
  • Я определил и user_id, и получателя_id как внешние ключи, которые ссылаются на user_id. Столбец в модели User.
  • Я попытался определить отношения в модели User, чтобы они ссылались как на назначения, так и на назначения_полученных, но я все еще сталкиваюсь с ошибкой AmbigiousForeignKeysError. >
  • Я пробовал использовать Foreign_keys в db.relationship(), чтобы явно указать, какой внешний ключ следует использовать, но это не решило проблему.
Что я ожидал:
  • Я ожидал, что SQLAlchemy правильно определит связь между пользователем и AssignmentReminder, учитывая, что и user_id, и получатель_id являются внешними ключами, ссылающимися на user.id.
  • Я также ожидал, что использование Foreign_keys в определении отношений поможет SQLAlchemy различает два внешних ключа, устраняя неоднозначность.
Вопрос:
Как исправить ошибку AmbigiousForeignKeysError и убедитесь, что SQLAlchemy может правильно разрешить связь внешнего ключа между пользователем и AssignmentReminder?
Будем очень благодарны за любую помощь!

Подробнее здесь: https://stackoverflow.com/questions/793 ... nship-in-f
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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