Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 2, 2014 22:01:42

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Sqlalchemy форматирование объектов

Я же Вам написал ответ. Все поля считываются как атрибуты. Если поля не известны, то есть два подхода для считывания. Но у Вас не тот случай, так как Вы работаете с flask и явно задаете модель БД.

P.S. Без обид, но вопросы действительно не айс

Отредактировано 4kpt_II (Сен. 2, 2014 22:03:12)

Офлайн

#2 Сен. 2, 2014 23:55:22

GreyZmeem
От: Киев
Зарегистрирован: 2013-12-03
Сообщения: 147
Репутация: +  34  -
Профиль   Отправить e-mail  

Sqlalchemy форматирование объектов

d54wvzc+i5zirs,
Вы немного запутались в методах которые используются для представления объектов.

__repr__ - в идеале, должен возращать такое значение, при помощи которого можно было бы создать такой же объект. Но зачастую такое невозможно, потому следует вернуть string, который бы однозначно описывал этот объект. В алхмии я использую что-то вроде:

def __repr__(self):
 return u'<Book(id={}, author={}, name={})>'.format(self.id, self.author, self.name).encode('utf-8')

__str__ - возращаем string. Это произвольное описание вашего объекта. Если метод __str__ не определен, то вернется значение из __repr__
def __str__(self):
 return u'{}: {}'.format(self.author, self.name).encode('utf-8')

__unicode__ - должен вернуть unicode. Смысл точно такой-же как и __str__. Этот метод вызывается когда надо представить объект в unicode. Наример: unicode(myobj).
def __unicode__(self):
 return u'{}: {}'.format(self.author, self.name)

Для себя я решил, что описываю все в __unicode__, а в __str__ делаю так:
def __str__(self):
 return self.__unicode__().encode('utf-8')

Т.е., у вас была ошибка в том, что из __repr__ вы возвращали unicode, вместо string

Отредактировано GreyZmeem (Сен. 2, 2014 23:56:15)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version