【问题标题】:SQLAlchemy / WTForms QuerySelectFieldSQLAlchemy / WTForms QuerySelectField
【发布时间】:2013-08-21 21:54:51
【问题描述】:

我正在尝试在 Pyramid 应用程序上使用带有 SQLAlchemy 扩展的 WTForms。

我已经完成了:

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>

或类似的。我做错了什么?

【问题讨论】:

  • ParentModel 是一个类吗?也许你应该尝试 ParentModel.name 或你想要显示的东西
  • 我试过...事实上,我有一个类方法DBSession.query(ParentModel).order_by(sa.desc(ParentModel.title)),当在模板中作为直接变量调用时显示标题(即variable = ParentModel.all())。不过,这不会改变我在表单上看到的输出。
  • 你能给我们看看你的模板表格吗?

标签: sqlalchemy pyramid wtforms


【解决方案1】:

你需要在ParentModel上定义一个__str__方法

【讨论】:

  • 亲爱的@javex你能说明如何在ParentModel上定义__str__方法吗??
  • @Max 我真的不知道你的意思是什么?你去哪里可以找到class ParentModel,然后在它的块内你做def __str__(self):。这是基本的python。否则我不明白你的问题。
  • 哦,我明白了,抱歉耽误您的时间:(
猜你喜欢
  • 1970-01-01
  • 2014-03-02
  • 1970-01-01
  • 2015-07-07
  • 2018-06-29
  • 2019-10-26
  • 2020-02-21
相关资源
最近更新 更多