[英]Flask Rest API SQLAlchemy foreign key error
当我尝试“flask db migrate”时出现 SQLALchemy 错误
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)
我怎么解决这个问题? 我哪里做错了?
您已使用“菜单”model 中的此__tablename__
属性将“菜单”表重命名为“菜单”:
__tablename__ = 'menus'
然后您尝试引用“菜单”表,而实际上它的名称已更改为“菜单”。 解决此问题的最简单方法是将您的User.menu_id
列更改为此:
menu_id = Column(db.Integer(), db.ForeignKey('menus.id'), nullable=False)
解决此问题的另一种方法是将__tablename__
属性修改为“菜单”。 (你也可以直接删除它。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.