Flask - связь с двумя таблицами - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь создать отношение «один ко многим» между двумя таблицами, и у меня возникли проблемы с этим.

Код таблиц

class Movies(db.Model):
  __tablename__ = 'movies'
  id = db.Column(db.String(300), primary_key=True)
  cat_id = db.relationship('Category', backref='movie')
  title = db.Column(db.String(250), nullable=False)
  link = db.Column(db.String(250), nullable=False)
  duration = db.Column(db.String(250), nullable=False)
  thumb_large = db.Column(db.String(250), nullable=False)
  thumb = db.Column(db.String(250), nullable=False)
  embed = db.Column(db.String(250), nullable=False)
  tags = db.Column(db.String(250), nullable=False)
  published = db.Column(db.String(250), nullable=False)


class Category(db.Model):
  __tablename__ = 'category'
  id = db.Column(db.String(300), db.ForeignKey('movies.cat_id'), primary_key=True)
  category = db.Column(db.String(30), nullable=False)

I ' м пытаюсь перенести его, но это дает мне эту ошибку sqlalchemy.exc.NoReferencedColumnError: Could not initialize target column for ForeignKey 'movies.cat_id' on table 'category': table 'movies' has no column named 'cat_id'

Я не могу понять, почему, если я уже установил связь. Есть идеи, что мне делать?

1 Ответ

0 голосов
/ 21 июня 2020

Думаю, это должно исправить. На мой взгляд, документация SQLAlchemy относительно отношений очень полезна. Вы можете найти это здесь .

class Movie(Model):
  __tablename__ = 'movies'
  id = db.Column(db.Integer, primary_key=True)
  title = db.Column(db.String(255), nullable=False, unique=True, index=True)
  link = db.Column(db.String(255), nullable=False)
  duration = db.Column(db.String(255), nullable=False)
  thumb_large = db.Column(db.String(255), nullable=False)
  thumb = db.Column(db.String(255), nullable=False)
  embed = db.Column(db.String(255), nullable=False)
  tags = db.Column(db.String(255), nullable=False)
  published = db.Column(db.String(255), nullable=False)
  cat_id = db.Column(db.Integer, ForeignKey('categories.id'))
  category = db.relationship('Category', backref='movies')

class Category(Model):
  __tablename__ = 'categories'
  id = db.Column(db.Integer, primary_key=True)
  title = db.Column(db.String(31), nullable=False, unique=True, index=True)
...