我有以下模型:

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

我究竟做错了什么?

最佳答案

在这条线上...

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=backref而不是backref=db.backref

关于python - Flask + SQLAlchemy邻接列表backref错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26475977/

10-12 21:11