我是Flask和SQLalchemy的新手。想要使用显示分配给该照片的所有标签的单张照片的网页。烧瓶SQLalchemy - 多对多 - 用所有标签(或所有帖子的博客等)显示照片
我有SQLalchemy工作正常与MYSQL数据库。奈斯利检索记录等
我需要用瓶/ SQLAlchemy的工作流程帮助:
模型 - >视图(从网址如观看输入/照片的身份证件) - >模板 - >网页
该型号如下:
class Photos(db.Model):
id = db.Column(db.Integer, primary_key=True)
filename = db.Column(db.String(100))
tags = db.relationship(
'Tags',
secondary=photo_tags,
backref='photos')
class Tags(db.Model):
id = db.Column(db.Integer, primary_key=True)
tagname = db.Column(db.String(100))
photo_tags = db.Table('photo_tags',
db.Column('tag_id', db.Integer, db.ForeignKey('tags.id')),
db.Column('photo_id', db.Integer, db.ForeignKey('photos.id'))
)
我的看法如下:
@app.route('/phototags/<int:id>')
#@login_required
def phototags(id=None):
photo_tags = Tags.query.filter(Tags.photos).filter(id == id).all()
return render_template(
'phototags.html',
title='PhotoTags',
message='Your application description page.',
photo_tags = photo_tags
)
我的模板如下:
{% extends "layout.html" %}
{% block content %}
<h2>{{ title }}.</h2>
<h3>{{ message }}</h3>
{% for phototag in photo_tags %}
<div style="float:left; class=" img-responsive">
<p><a href="{{ url_for('photo', id=phototag.id)}}">photo</a></p>
<p><a href="{{ url_for('tag', id=phototag.id)}}"></p>tag</a></p>
<img src="static/photos/{{ phototag.id }}" width="100" height="100">
</div>
{% endfor %}
{% endblock %}
我敢肯定的模型和关联表/模型是正确安装。
该模板并不完美,因为它目前似乎显示照片ID的标签ID。我试图做'phototag.photo_id'或'phototag.filename',但不出来。显然,查看查询并没有做到这一点。
所以视图是我需要帮助的。查询是否正确?它是否正确获取url传递参数为photo_id?
我的测试数据很简单。我有一张照片记录与photos.id = 1
这有2个相关Phototags记录:phototags.id = 1(tag.id = 1),phototags.id = 2(tag.id = 2)
当我通过url http://localhost:5555/phototags/1我的查看查询通过标记id,但更改传递的参数总是获得相同的标记id,例如phototags/2也获得相同的两个标记。所以查询显然是不正确的。
我看过几十个例子,它们都与我想要的完全不同。我所看到的所有示例/教程/ SO问题/答案都不显示模型,视图和模板如何协同工作以获得我想要的内容。他们要么:
- 越来越相反如等价的照片通过标签(想在照片标签)
- 是由照片得到标签(我甚至不认为我得到的是) 只是查询
- 有另一个SQLAlchemy的符号,包括代替“db.model”会议'或“基地”
我想作为输出照片的身份证,所以我可以显示照片和名字等,也显示一个列表与该照片相关联的标签,例如用逗号分隔的列表。
我很难找到一个演示/示例/教程/ github项目,引导我通过我需要的工作流程。
任何人都可以看到我可以从url参数获取照片id,然后查询我的模型以获取相关标签的示例吗?
啊,好吧,这太容易了。这就是如何使用Photos模型中的标签关联(和backref)。我不会想到使用'photo.tags',因为我不知道该关联可以通过标记关联访问photo_tags表。现在做出总体感觉。谢谢! – curtisp