错误InvalidRequestError:应使用hybrid_属性的SQL表达式、列或映射实体

2024-05-29 03:31:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下模型类:

class ArticleOptionSetModel(db.Model):
    __tablename__ = 'sdt_articles_options_sets'

    id = db.Column(db.Integer, db.Sequence("sdq_articles_options_sets"), primary_key=True)
    article_id = db.Column(db.Integer, db.ForeignKey('sdt_articles.id'), nullable=False)
    option_set_id = db.Column(db.Integer, db.ForeignKey('sdt_options_sets.id'), nullable=False)
    order_num = db.Column(db.Integer, nullable=False)

    def have_options(self, article_id) -> int:
        result = db.session.query(func.count(ArticleOptionSetModel.id))\
                                  .join(OptionSetModel, ArticleOptionSetModel.option_set_id == OptionSetModel.id)\
                                  .filter(ArticleOptionSetModel.article_id == self.article_id)\
                                  .filter(OptionSetModel.option_type == OT_OPTION).one()
        if result[0] > 0:
            return 1
        else:
            return 0

如果我尝试在联接中使用此模型,并提取字段:

        result = db.session.query(ArticleModel.id,
                                  ArticleOptionSetModel.have_options)\
            .join(ArticleOptionSetModel, ArticleModel.id == ArticleOptionSetModel.article_id)

        return result.all()

我得到这个错误:

sqlalchemy.exc.InvalidRequestError:应为SQL表达式、列或映射实体-获得“1”

其中1是从我的方法返回的值

从方法返回的0或1应视为调用者查询中的列结果。 这怎么可能呢


Tags: idfalsedbarticlesetscolumnintegerresult

热门问题