Python 烧瓶SQLAlchemy过滤器通过并遵循多个反向参考

Python 烧瓶SQLAlchemy过滤器通过并遵循多个反向参考,python,flask,sqlalchemy,flask-sqlalchemy,Python,Flask,Sqlalchemy,Flask Sqlalchemy,我想从扩展模式,并添加一个名为Editor的类 我的模式现在如下所示: from datetime import datetime from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db' db = SQLAlchemy(app) class

我想从扩展模式,并添加一个名为
Editor
的类

我的模式现在如下所示:

from datetime import datetime
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)


class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(80))
    body = db.Column(db.Text)
    pub_date = db.Column(db.DateTime)

    category_id = db.Column(db.Integer, db.ForeignKey('category.id'))
    category = db.relationship('Category',
        backref=db.backref('posts', lazy='dynamic'))

    def __init__(self, title, body, category, pub_date=None):
        self.title = title
        self.body = body
        if pub_date is None:
            pub_date = datetime.utcnow()
        self.pub_date = pub_date
        self.category = category

    def __repr__(self):
        return '<Post %r>' % self.title


class Category(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))

    editor_id = db.Column(db.Integer, db.ForeignKey('editor.id'))
    editor = db.relationship('Editor',
        backref=db.backref('categories', lazy='dynamic'))

    def __init__(self, name, editor):
        self.name = name
        self.editor = editor

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


class Editor(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))

    def __init__(self, name):
        self.name = name

    def __repr__(self):
        return '<Editor %r>' % self.name
但我有一个错误:

SyntaxError: keyword can't be an expression

如何通过编辑获取帖子?

您必须先加入帖子和类别,我对您的测试做了一些小的修改:

db.create_all()
e = Editor('Dude')
py = Category('Python', e)
p = Post('Hello Python!', 'Python is pretty cool', py)
db.session.add(py)
db.session.add(p)
db.session.add(e)
print Post.query.filter_by(category=py).all()
print Category.query.filter_by(editor=e).all()
print Post.query.join(Category).filter_by(editor=e).all()
SyntaxError: keyword can't be an expression
db.create_all()
e = Editor('Dude')
py = Category('Python', e)
p = Post('Hello Python!', 'Python is pretty cool', py)
db.session.add(py)
db.session.add(p)
db.session.add(e)
print Post.query.filter_by(category=py).all()
print Category.query.filter_by(editor=e).all()
print Post.query.join(Category).filter_by(editor=e).all()