Python 烧瓶sqlalchemy:sqlalchemy.exc.AmbiguousForeignKeyError

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

我是新开发人员,我尝试在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(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==>