Flask 联接表丢失';id';属性

Flask 联接表丢失';id';属性,flask,jinja2,flask-sqlalchemy,Flask,Jinja2,Flask Sqlalchemy,我正在尝试连接两个表,以便能够将相应的“主题”与“主题”关联起来。连接似乎可以工作,但模板在渲染时出现以下错误: jinja2.exceptions.UndefinedError:'sqlalchemy.util.\u collections.result 对象“”没有属性“id” 加入表后,我如何处理Topic.id 模型 看法 html jinja2模板 主题#名称删除 {主题%中的主题为%s} {%endfor%} 将查询更改为: topics = db.session.query(To

我正在尝试连接两个表,以便能够将相应的“主题”与“主题”关联起来。连接似乎可以工作,但模板在渲染时出现以下错误:

jinja2.exceptions.UndefinedError:'sqlalchemy.util.\u collections.result 对象“”没有属性“id”

加入表后,我如何处理Topic.id

模型

看法

html jinja2模板


主题#名称删除
{主题%中的主题为%s}
{%endfor%}

将查询更改为:

topics = db.session.query(Topic).join(Theme).order_by(Theme.theme_name).all()

使用
query(Topic)
表示我们有兴趣获取
Topic
值。相比之下,您当前的实现使用了
查询(主题,主题)
,这表明您对获取
(主题,主题)
的元组感兴趣。谢谢,这是一个快速的解决方案。这两种实现之间的明显区别。
@main.route('/topics', methods=['GET', 'POST'])
def topics():
    topics = db.session.query(Topic, Theme).join(Theme).order_by(Theme.theme_name).all()
    themes = Theme.query
    form = TopicForm()
    form.theme.choices = [(t.id, t.theme_name) for t in Theme.query.order_by('theme_name')]
    if form.validate_on_submit():
        topic = Topic(topic_name=form.topic_name.data,
                    theme_id=form.theme.data)
        db.session.add(topic)
    return render_template('topics.html', topics=topics, themes=themes, form=form)
<table class="table table-hover parties">
        <thead><tr><th>Theme</th><th>#</th><th>Name</th><th>Delete</th></tr></thead>
        {% for topic in topics %}
        <tr>
            <td><a href="#">{{ topic.theme_id }}</a></td>
            <td><a href="#">{{ topic.id }}</a></td>
            <td><a href="#">{{ topic.topic_name }}<span class="badge">0</span></a></td>
            <td><a class="btn btn-danger btn-xs" href="{{ url_for('main.delete_topic', id=topic.id) }}" role="button">Delete</a></td>
        </tr>
        {% endfor %}
    </table>
topics = db.session.query(Topic).join(Theme).order_by(Theme.theme_name).all()