如何序列化不可json序列化的对象?使用炼金术分页的对象

fae0ux8s  于 2021-07-14  发布在  Java
关注(0)|答案(0)|浏览(198)

我需要为申请做分页,但我有一些误解,并没有在文件中找到正确的答案。
我用 flask ,sqlalchemy库。
q中有select语句,它过滤并获取查询对象列表:

q = db_session.query(AnalogsListl) \
            .filter(AnalogsList.is_final == is_final)

d = BaseQuery.paginate(q)

变量d返回对象列表,如[<dbmodels.analogs\u list.analogslist object at 0x125c6db80>,<dbmodels.analogs\u list.analogslist object at 0x125c6ddf0>,<dbmodels.analogs\u list.analogslist object at 0x125c6de50>,…]
然后我编写了两个类:分页和basequery:

class Pagination(object):

    def __init__(self, query, page, per_page, total, items):
        self.query = query
        self.page = page
        self.per_page = per_page
        self.total = total
        self.items = items

    def __iter__(self):
        for page in range(1, self.pages + 1):
            yield self.query.paginate(page, self.per_page)

    def prev(self):
        return self.query.paginate(self.page - 1, self.per_page)

    def next(self):
        return self.query.paginate(self.page + 1, self.per_page)

    @property
    def pages(self):
        return int(ceil(self.total / float(self.per_page)))

class BaseQuery(Query):

    def __init__(self, *args,**kwargs):
        self.cls = args[0].class_
        super(BaseQuery, self).__init__(*args,**kwargs)

    def paginate(self, page=1, per_page=10):
        items = self.limit(per_page).offset((page - 1) * per_page).all()

        count = self.order_by(False).count()

        return Pagination(self, page, per_page, count, items)

当我运行我的代码,回溯返回我
raise typeerror(f'object of type{o.class.name}'typeerror:分页类型的对象不可json序列化
我不确定我写的页码是否正确,不知道如何解决我的问题。
谢谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题