Python 烧瓶sqlalchemy:sqlalchemy.exc.AmbiguousForeignKeyError
我是新开发人员,我尝试在flask中创建小应用程序-sqlalchemy和flask_admin。 这是我的模型:Python 烧瓶sqlalchemy:sqlalchemy.exc.AmbiguousForeignKeyError,python,sqlalchemy,Python,Sqlalchemy,我是新开发人员,我尝试在flask中创建小应用程序-sqlalchemy和flask_admin。 这是我的模型: class Language(db.Model): __tablename__ = "languages" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(length=50), nullable=False) class Article(d
class Language(db.Model):
__tablename__ = "languages"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(length=50), nullable=False)
class Article(db.Model):
__tablename__ = 'articles'
from_language_id = db.Column(db.Integer, db.ForeignKey('languages.id'), nullable=True)
to_language_id = db.Column(db.Integer, db.ForeignKey('languages.id'), nullable=True)
language_from = db.relationship('Language', backref='article_language_from')
language_to = db.relationship('Language', backref='article_language_to')
模型告诉我这个错误:
sqlalchemy.exc.AmbiguousForeignKeyError:无法确定加入
关系上父/子表之间的条件
Article.language_from-有多个外键路径链接
桌子。指定'foreign_keys'参数,提供
应计为包含外键的列
对父表的引用
我想在模型文章中使用模型语言2次,从_Language _id到_Language _id,
我怎样才能解决我的错误
编辑:我的错误,错误来自flask_admin==>,我如何修复它?尝试以下操作:
class Language(db.Model):
__tablename__ = "languages"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(length=50), nullable=False)
class Article(db.Model):
__tablename__ = 'articles'
id = db.Column(db.Integer, primary_key=True)
from_language_id = db.Column(db.Integer, db.ForeignKey('languages.id'), nullable=True)
to_language_id = db.Column(db.Integer, db.ForeignKey('languages.id'), nullable=True)
language_from = db.relationship('Language', backref='article_language_from')
language_to = db.relationship('Language', backref='article_language_to')
输出:
test=# \d articles
Table "public.articles"
Column | Type | Collation | Nullable | Default
------------------+---------+-----------+----------+--------------------------------------
id | integer | | not null | nextval('articles_id_seq'::regclass)
from_language_id | integer | | |
to_language_id | integer | | |
Indexes:
"articles_pkey" PRIMARY KEY, btree (id)
Foreign-key constraints:
"articles_from_language_id_fkey" FOREIGN KEY (from_language_id) REFERENCES languages(id)
"articles_to_language_id_fkey" FOREIGN KEY (to_language_id) REFERENCES languages(id)
test=# \d languages;
Table "public.languages"
Column | Type | Collation | Nullable | Default
--------+-----------------------+-----------+----------+---------------------------------------
id | integer | | not null | nextval('languages_id_seq'::regclass)
name | character varying(50) | | not null |
Indexes:
"languages_pkey" PRIMARY KEY, btree (id)
Referenced by:
TABLE "articles" CONSTRAINT "articles_from_language_id_fkey" FOREIGN KEY (from_language_id) REFERENCES languages(id)
TABLE "articles" CONSTRAINT "articles_to_language_id_fkey" FOREIGN KEY (to_language_id) REFERENCES languages(id)
您好,我刚刚复制了您的代码,并在
文章
类中添加了id,它可以正常工作。请看一看我的错误,错误来自flask_admin==>如果您没有在文章类中指定主键字段,那么它将给出错误。所以你只需要指定。。。错误:raise sa_exc.ArgumentError(sqlalchemy.exc.ArgumentError:Mapper-Mapper-mapped class-Article->articles无法为映射表'articles'组装任何主键列。我怎么做?我已经做了所有事情。你必须使用我的上述建议代码我的错误,错误来自flask_-admin==>