SAWarning в flask-sqlachemy
Начинаю изучать flask и SQL. С таким описанием классов получаю
SAWarning: Table 'reviews' specifies columns 'id' as primary_key=True, not
matching locally specified columns 'user_id', 'book_id'; setting the current
primary key columns to 'user_id', 'book_id'. This warning may become an exception in a future release
", ".join("'%s'" % c.name for c in self.columns),
Как я понял, это связанно с двумя ForeignKey в Reviews. Но разве
__table_args__ = (
db.PrimaryKeyConstraint('user_id', 'book_id'),
)
Не должно решать проблему?
Так же является ли двойной ForeignKey признаком плохого проектирования?
class Authors(db.Model):
__tablename__ = 'authors'
id = db.Column('id', db.Integer, primary_key=True)
name = db.Column('name', db.String, nullable=False)
class Books(db.Model):
__tablename__ = 'books'
id = db.Column('id', db.Integer, primary_key=True)
author_id = db.Column('author_id', db.Integer,
db.ForeignKey('authors.id'), nullable=False)
name = db.Column('name', db.String, nullable=False)
year = db.Column('year', db.Integer)
class Reviews(db.Model):
__tablename__ = 'reviews'
__table_args__ = (
db.PrimaryKeyConstraint('user_id', 'book_id'),
)
id = db.Column('id', db.Integer, primary_key=True)
book_id = db.Column('book_id', db.Integer,
db.ForeignKey('books.id'), nullable=False)
user_id = db.Column('user_id', db.Integer,
db.ForeignKey('users.id'), nullable=False)
rating = db.Column('rating', db.String, nullable=False)
comment = db.Column('comment', db.String)