Arn*_*ues 6 python postgresql sqlalchemy
我一直在控制台上收到警告,我读了这么多书,但我无法解决这个问题,我快要疯了:
SAWarning:关系“Book.users”会将列 user.uid 复制到列 user_book.uid,这与关系冲突:“User.books”(将 user.uid 复制到 user_book.uid)。如果这不是本意,请考虑这些关系是否应与 back_populates 链接,或者如果它们是只读的,是否应将 viewonly=True 应用于一个或多个关系。对于不太常见的外键约束部分重叠的情况,可以使用 orm.foreign() 注释来隔离应写入的列。'overlaps' 参数可用于消除此警告。
控制台在本通知中引用的表格如下:
user_book = db.Table('user_book',
db.Column('uid', db.Integer, db.ForeignKey('user.uid'), primary_key=True),
db.Column('bid', db.Text, db.ForeignKey('book.bid'), primary_key=True),
db.Column('date_added', db.DateTime(timezone=True), server_default=db.func.now())
)
class User(db.Model):
__tablename__ = 'user'
uid = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(25), nullable=False)
hash = db.Column(db.String(), nullable=False)
first_name = db.Column(db.String(30), nullable=True)
last_name = db.Column(db.String(80), nullable=True)
books = db.relationship('Book', secondary=user_book)
class Book(db.Model):
__tablename__ = 'book'
bid = db.Column(db.Text, primary_key=True)
title = db.Column(db.Text, nullable=False)
authors = db.Column(db.Text, nullable=False)
thumbnail = db.Column(db.Text, nullable=True)
users = db.relationship('User', secondary=user_book)
Run Code Online (Sandbox Code Playgroud)
我使用user_book table向用户显示他添加的书籍。
我缺少什么?我借此机会问一下,从语义上讲,表和外键之间的关系做得正确吗?
正如警告消息所示,您缺少back_populates=关系中的属性:
class User(db.Model):\n# \xe2\x80\xa6\n books = db.relationship(\'Book\', secondary=user_book, back_populates="users")\n# \xe2\x80\xa6\n \nclass Book(db.Model):\n# \xe2\x80\xa6\n users = db.relationship(\'User\', secondary=user_book, back_populates="books")\n# \xe2\x80\xa6\nRun Code Online (Sandbox Code Playgroud)\n