gce*_*rar 2 tagging many-to-many sqlalchemy flask flask-sqlalchemy
我已经定义了模型:
tags = db.Table('tags',
db.Column('tag_id', db.Integer, db.ForeignKey('tag.id')),
db.Column('photo_id', db.Integer, db.ForeignKey('photo.id')),
)
class Tag(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(32), unique=True)
class Photo(db.Model):
id = db.Column(db.Integer, primary_key=True)
sha1sum = db.Column(db.LargeBinary(20), unique=True)
...
tags = db.relationship('Tag', secondary=tags,
backref=db.backref('photos', lazy='dynamic'))
Run Code Online (Sandbox Code Playgroud)
在烧瓶控制器/视图中,我获得了一些输入标签['summer', 'selfie', ...]
.
问题:
['summ', 'elfi', ...]
?可能不是最有效的(如果你有很多标签要搜索),但组成查询的方式非常易读:
input_tags = ['selfie', 'summer']
q = db.session.query(Photo)
for tag in input_tags:
q = q.filter(Photo.tags.any(Tag.name == tag))
Run Code Online (Sandbox Code Playgroud)
不完整使用startswith(..)
而不是==
:
input_tags = ['sum', 'fu']
q = db.session.query(Photo)
for tag in input_tags:
q = q.filter(Photo.tags.any(Tag.name.startswith(tag)))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2071 次 |
最近记录: |