jsonifying 模型实例时出错

Error when jsonifying model instances

我有以下代码:

def getRestaurants():    
    restaurant_list = session.query(RESTAURANT).all()
    return jsonify(restaurant_list)


class RESTAURANT(Base):
    __tablename__ = 'RESTAURANT'

    RESTAURANTID = Column(Integer, primary_key=True)
    RESTAURANTNAME = Column(String(50), nullable=False)
    RESTAURANTDESCRIPTION = Column(String(1024))

    def serialize(self):
        return {        
            'RESTAURANTID': self.RESTAURANTID, 
            'RESTAURANTNAME': self.RESTAURANTNAME,
            'RESTAURANTDESCRIPTION': self.RESTAURANTDESCRIPTION        
        }

    def __unicode__(self):
        return self.str

    def __str__(self):        
        return unicode(self).encode('utf-8')

当我调用 getRestaurants 时,出现以下错误:

TypeError: cannot convert dictionary update sequence element #0 to a sequence

我该如何解决这个问题?

jsonify 接受任意数量的 (key, value) 对,以及 key=value 关键字。您传递的是模型实例列表,它不是成对序列。相反,使用 jsonify(data=restaurant_list).

之类的东西

之后,添加方法 serialize 不会使模型 json 可序列化。您需要自己调用序列化并将结果传递给 jsonify.

def getRestaurants():
    return jsonify(data=[r.serialize() for r in session.query(RESTAURANT)])