2015-03-02 1 views
1

У меня есть следующий код:Ошибка при jsonifying модели экземпляров

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 

Как это исправить?

+0

В чем заключается синтаксическая ошибка? Кроме того, что такое 'self.str'? – dirn

ответ

0

jsonify принимает любое количество пар (key, value), а также key=value ключевых слов. Вместо этого вы передаете список экземпляров модели, который не является последовательностью пар. Вместо этого используйте что-то вроде jsonify(data=restaurant_list).

После этого, добавление метода serialize не делает модель json seralializable. Вам нужно позвонить сериализовать себя и передать этот результат jsonify.

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