QuerySelectField未显示预期输出

2024-04-20 08:40:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到的错误是TypeError: 'Query' object is not callable。在

我在Pyramid中创建一个博客引擎,我陷入了QuerySelectField中,如何在名为categories的单独表中显示类别,而categories是Articles模型的外键?在

预期输出

Category Field Should Show all the Category present in Database to choose from.

模型.py

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

class Category(Base):
    __tablename__ = 'categories'
    id = Column(Integer, primary_key=True)
    name = Column(String(100), unique=True, nullable=False)
    description = Column(Text, nullable=False)


class Article(Base):
    __tablename__ = 'articles'
    id = Column(Integer, primary_key=True)
    title = Column(String(255), unique=True, nullable=False)
    body =  Column(Text, nullable=False)
    category = Column(ForeignKey(Category.name), nullable=False)
    created = Column(DateTime, default=datetime.datetime.now)

    @property
    def slug(self):
        return urlify(self.title)

    @property
    def created_in_words(self):
        return time_ago_in_words(Article.created)

视图.py

^{pr2}$

表单.py

from models import DBSession
from models import Category
from wtforms import Form, TextField, TextAreaField, SubmitField, validators
from wtforms.ext.sqlalchemy.fields import QuerySelectField

def Category_choice():
    return DBSession.query(Category.name)

class ArticleCreateForm(Form):
    title = TextField('Title', [validators.required(), validators.length(min=1,max=240)])
    body = TextAreaField('Content', [validators.required()])
    category = QuerySelectField('Category', query_factory=Category_choice())
    submit = SubmitField()

Tags: infrompyimportfalsetruebasecolumn
1条回答
网友
1楼 · 发布于 2024-04-20 08:40:49

将此行从query_factory=Category_choice()更改为query_factory=Category_choice,然后

更改您的类别选择功能为

def Category_choice():
    return DBSession.query(Category)

你的表格现在是这样的

^{pr2}$

在你的类别模型中添加这个方法调用

   def __str__(self):
        return self.name

详细说明请参考This Documentation。在

希望有帮助。在

相关问题 更多 >