【问题标题】:Flask + SQLAlchemy adjacency list backref errorFlask + SQLAlchemy 邻接列表 backref 错误
【发布时间】:2014-10-20 22:27:50
【问题描述】:

我有以下型号:

class Category(db.Model):
    __tablename__ = 'categories'

    id = db.Column(db.Integer, primary_key=True)
    parent_id = db.Column(db.Integer, db.ForeignKey(id), nullable=True)
    level = db.Column(db.SmallInteger)
    name = db.Column(db.String(200))
    children = db.relationship('Category', backref=backref('parent', remote_side=id))

    def __repr__(self):
        return '<Category %r>' % (self.name)

这似乎不起作用。我总是收到以下错误:

NameError: name 'backref' is not defined

我做错了什么?

【问题讨论】:

    标签: python orm flask sqlalchemy flask-sqlalchemy


    【解决方案1】:

    在这条线上……

    children = db.relationship('Category', backref=backref('parent', remote_side=id))
    

    您正在使用属性backref,但从未定义它。如果你写了,你会得到类似的错误...

    children = db.relationship('Category', backref=photosynthesis('parent', remote_side=id))
    

    同样的问题:Python 不知道什么是“光合作用”。

    那么,backref 实际上应该在您的代码中是什么?原来是function that is part of SQLAlchemy。像其中许多函数(例如,您正在使用的“关系”函数)一样,Flask-SQLAlchemy 将为您提供一个别名,因此您无需直接导入它们。

    您可以使用docs 作为您的指南。你想要backref=db.backref,而不是backref=backref

    【讨论】:

    • 哦,对了……没想到。这是我的第一个 python 项目。我会试试这个报告回来。
    【解决方案2】:

    你必须明确什么是 backref。你可以通过这个导入来做到这一点:

    from sqlalchemy.orm import backref
    

    【讨论】:

    • 这个答案更好,因为它不会绕圈子。 +1
    猜你喜欢
    • 2013-02-11
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    相关资源
    最近更新 更多