繁体   English   中英

计数上的 flask_sqlalchemy 类型错误()

[英]flask_sqlalchemy TypeError on count()

在 chinook.sqlite db 中,下面两个表是相关的。

艺术家

  • 艺人ID(PK)
  • 姓名

专辑

  • 专辑编号(PK)
  • 标题
  • 艺人(FK))

我得到了反映的数据库元数据

app = Flask(__name__, instance_relative_config=True)
db = SQLAlchemy()
db.app = app
db.init_app(app)
db.Model.metadata.reflect(db.engine)

在我的 model.py

from app import db

class Album(db.Model):
    __table__ = db.Model.metadata.tables['albums']
    artist = db.relationship('Artist' , backref = 'artists')

class Artist(db.Model):
    __table__ = db.Model.metadata.tables['artists']
    album = db.relationship('Album', backref = 'albums')

在视图中,

{{ 艺术家.album.count() }}

给出错误, TypeError: count() 只接受一个参数(给定 0)

我究竟做错了什么?

ORM 关系尚未配置为 dynamic ,因此您调用的是Query.count()而不是list.count() 使用len()

{{ len(artist.albums) }}

您的 model 定义还定义了额外的关系属性。 而不是backref ,这是在另一端创建新关系属性的简写,使用back_populates将两个边链接在一起:

class Album(db.Model):
    __table__ = db.Model.metadata.tables['albums']
    artist = db.relationship('Artist', back_populates = 'albums')

class Artist(db.Model):
    __table__ = db.Model.metadata.tables['artists']
    albums = db.relationship('Album', back_populates = 'artist')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM