2013-08-20 6 views
0

Я пытаюсь использовать WTForms с расширением SQLAlchemy в приложении Pyramid.SQLAlchemy/WTForms QuerySelectField

Я сделал:

from wtforms import Form, TextField,TextAreaField, validators 
from wtforms.ext.sqlalchemy.fields import QuerySelectField 
from app.models import DBSession 
from app.models import ParentModel 


class NewChild(Form): 
    title = TextField('Title:', [validators.Required()]) 
    intro = TextAreaField('Introduction:') 
    body = TextAreaField('Body:') 
    parent = QuerySelectField(query_factory=DBSession().query(ParentModel).all) 

DBSession определяется как

DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension())) 

Запрос, кажется, работает, но дисплей в моем шаблоне читает

<app.models.ParentModel object at 0x9xxx> 

или некоторые такие , Что я делаю не так?

+0

Является ParentModel класса? возможно, вам следует попробовать ParentModel.name или что-то, что вы хотите отобразить –

+0

Я пробовал ... на самом деле, у меня есть метод класса 'DBSession.query (ParentModel) .order_by (sa.desc (ParentModel.title))', который отображает заголовки когда вызывается как прямая переменная в шаблоне (т.е. 'variable = ParentModel.all()'). Это не меняет результат, который я вижу в форме. – brandonjschwartz

+0

Можете ли вы показать нам свою форму шаблона? – ajkumar25

ответ

2

Вам нужно определить метод __str__ на ParentModel

+0

Работал, спасибо! :) – brandonjschwartz

+0

Уважаемый @javex, пожалуйста, укажите, как определить метод '__str__' на ParentModel ?? – Max

+1

@Max Я честно не уверен, что вы имеете в виду? Вы идете туда, где 'class ParentModel' может быть найден, и внутри его блока вы выполняете' def __str __ (self): '. Это базовый питон. В противном случае я не получу ваш вопрос. – javex