Flask Rest API SQLAlchemy外键错误



当我尝试"烧瓶db迁移";

NoReferencedTableError: Foreign key associated with column 'user.menu_id' could not find table 'menu' with which to generate a foreign key to target column 'id

菜单表

class Menu(db.Model):
__tablename__ = 'menus'
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(64), index=True, unique=True)
price = db.Column(db.String(64), index=True, unique=True)
description = db.Column(db.String(64), index=True, unique=True)
picture = db.Column(db.String(64), index=True, unique=True)
create_date = db.Column(db.DateTime, default=datetime.utcnow)
users = db.relationship('User', backref="menu", lazy=True)

用户表

class User(Model):
""" User model for storing user related data """
id = Column(db.Integer, primary_key=True)
email = Column(db.String(64), unique=True, index=True)
username = Column(db.String(15), unique=True, index=True)
name = Column(db.String(64))
password_hash = Column(db.String(128))
admin = Column(db.Boolean, default=False)
joined_date = Column(db.DateTime, default=datetime.utcnow)    
userdataset = db.relationship("Dataset", backref="user", lazy="dynamic")
menu_id = Column(db.Integer(), db.ForeignKey('menu.id'), nullable=False)
def __init__(self, **kwargs):
super(User, self).__init__(**kwargs)

如何解决这个问题?我哪里做错了?

您已将"Menu"表重命名为"menus",并在"Menu"模型中使用此__tablename__属性:

__tablename__ = 'menus'

然后,您尝试引用"Menu"表,而事实上,它的名称已更改为"menus"。解决此问题的最简单方法是将User.menu_id列更改为:

menu_id = Column(db.Integer(), db.ForeignKey('menus.id'), nullable=False)

解决此问题的另一种方法是将__tablename__属性修改为"menu"。(你也可以直接删除它。(

相关内容

最新更新