gpt4 book ai didi

flask - 加入的表丢失了 'id' 属性

转载 作者:行者123 更新时间:2023-12-03 16:22:00 27 4
gpt4 key购买 nike

我正在尝试加入两个表,以便能够将相应的“主题”与“主题”相关联。连接似乎有效,但模板在渲染时出现此错误:

jinja2.exceptions.UndefinedError: 'sqlalchemy.util._collections.result object' has no attribute 'id'



加入表格后如何处理 Topic.id?

楷模
class Topic(db.Model):
id = db.Column(db.Integer, primary_key=True)
topic_name = db.Column(db.String(64))
opinions = db.relationship(Opinion, backref='topic')
theme_id = db.Column(db.Integer, db.ForeignKey('theme.id'))

class Theme(db.Model):
id = db.Column(db.Integer, primary_key=True)
theme_name = db.Column(db.String(64))
topics = db.relationship(Topic, backref='theme')

看法
@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)

html jinja2 模板
<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()

使用 query(Topic)表示我们有兴趣获取 Topic值回来。相比之下,您当前的实现使用 query(Topic, Theme)这表明您有兴趣获取 (Topic, Theme) 的元组.

关于flask - 加入的表丢失了 'id' 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41600688/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com