首页 > 解决方案 > Flask Sql 炼金术关系

问题描述

我无法在 Flask SQL Alchemy 中建立一对一的关系。在终端中运行命令后立即flask-init出现以下错误:

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

我有三(3)张桌子。

  1. 语言
  2. 时区
  3. 用户

表用户具有 Languages 表和 TimeZones 表的主键。

以下是所有三个表的代码:

1. 语言

from modules.user_management.user_model import *

class Languages(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    language_culture = db.Column(db.String(50), nullable=False)
    language_rtl = db.Column(db.Integer, nullable=False)
    language_code = db.Column(db.String(50))
    is_published = db.Column(db.Integer)

    language_resources = db.relationship('LanguageResources', backref=db.backref('languages', lazy=True))
    users = db.relationship('User', backref=db.backref('languages', lazy=True))

2. 时区

from modules.user_management.user_model import *

class TimeZones(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    time_zone = db.Column(db.String(50), unique=True, nullable=False)

    users = db.relationship('User', backref=db.backref('timezones', lazy=True))

3. 用户

from modules.setups.language_model import *
from modules.setups.time_zone_model import *

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    language_id = db.Column(db.Integer, db.ForeignKey('languages.id'), nullable=False)
    timezone_id = db.Column(db.Integer, db.ForeignKey('timezones.id'), nullable=False)

    user_logs = db.relationship('UserLogs', backref=db.backref('user', lazy=True))

按照以下链接上的教程,我找不到任何问题。

http://flask-sqlalchemy.pocoo.org/2.3/models/

标签: pythonsqlalchemy

解决方案


推荐阅读