swo*_*ish 2 flask flask-sqlalchemy
我想为客户端的 subscribed_users 分页,但我收到一条错误消息:
cl = Client.query.filter_by(family='John').first()
cl.subscribed_users.paginate()
Run Code Online (Sandbox Code Playgroud)
AttributeError: 'InstrumentedList' object has no attribute 'paginate'
这是我的models.py
subscribers = db.Table(
'clients_subscribed',
db.Column('client_id', db.Integer, db.ForeignKey('client.id', ondelete='CASCADE')),
db.Column('user_id', db.Integer, db.ForeignKey('user.id', ondelete='CASCADE'))
)
class Client(db.Model):
subscribed_users = db.relationship(
'User',
secondary=subscribers,
backref=db.backref('user', passive_deletes=True, lazy='dynamic')
)
Run Code Online (Sandbox Code Playgroud)
paginate()定义在BaseQuery哪个是Queryin的子类上sqlalchemy。当您对flask-sqlalchemy模型执行查询时,分页可用但subscribed_users不是flask-sqlalchemy模型,因此您不能对其调用分页,因为它没有。解决办法是改成db.Table一个类如下:
class Subscribers(db.Model):
client_id = db.Column(db.Integer, db.ForeignKey('client.id'), primary_key=True))
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), primary_key=True))
class Client(db.Model):
subscribed_users = db.relationship(
...
secondary=Subscribers,
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2157 次 |
| 最近记录: |