一对多关系NoForeignKeysError

时间:2016-12-17 23:45:48

标签: python mysql sqlalchemy flask-sqlalchemy

无法为具有多个配置文件的用户创建一对多关系。 这是我的模特:

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column('id', db.String(32), primary_key=True)
    email = db.Column('email', db.String(45))
    password = db.Column('password', db.String(45))
    profiles = db.relationship('Profile', backref='user', lazy='dynamic')

class Profile(db.Model):
    __tablename__ = 'profiles'
    id = db.Column('id', db.String(32), primary_key=True)
    user_id = db.Column('user_id', db.String(32), db.ForeignKey('user.id'))
    first_name = db.Column('first_name', db.String(45))
    last_name = db.Column('last_name', db.String(45))
    dob = db.Column('dob', db.String(45))
    sex = db.Column('sex', db.String(45))
    height = db.Column('height', db.String(45))
    weight = db.Column('weight', db.String(45))
    zip_code = db.Column('zip_code', db.String(45))
    date_created = db.Column('date_created', db.String(45))

我收到以下错误:

  

sqlalchemy.exc.NoForeignKeysError:无法确定关系User.profiles上的父/子表之间的连接条件 - 没有链接这些表的外键。确保引用列与ForeignKey或ForeignKeyConstraint相关联,或指定“primaryjoin”表达式。

我已经在网上搜索过,无法弄清楚我是如何设置错误的。

1 个答案:

答案 0 :(得分:0)

我认为您应该使用users.id而不是user.id,因为表名是"用户"。

user_id = db.Column('user_id', db.String(32), db.ForeignKey('users.id'))