Python 可以在烧瓶炼金术中返回分组行吗?
我试图取回根据某个列分组的行,但我不确定sqlalchemy是否可以返回这样的结果。一个简单的例子:Python 可以在烧瓶炼金术中返回分组行吗?,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,Flask Sqlalchemy,我试图取回根据某个列分组的行,但我不确定sqlalchemy是否可以返回这样的结果。一个简单的例子: # Models class User(Model): id = Column(Integer, primary_key=True) name = Column(String, default="foobar") items = relationship("Item", backref="user", lazy="dynamic") class Item(Model): id
# Models
class User(Model):
id = Column(Integer, primary_key=True)
name = Column(String, default="foobar")
items = relationship("Item", backref="user", lazy="dynamic")
class Item(Model):
id = Column(Integer, primary_key=True)
name = Column(String, default="")
custom_name = Column(String, default="default")
owner_id = Column(Integer, ForeignKey('user.id'))
一个示例数据表是:
# Users
id name
-------------
1 Bob
2 Alice
# Items
id name custom_name owner_id
--------------------------------------
1 book1 reading_list 1
2 book2 reading_list 1
3 teapot kitchen_thing 2
4 tv entertainment 1
5 pc entertainment 2
我想要所有的Bob
项目,但要根据自定义名称进行分组。最终结果是在jinja2模板上按其自定义名称显示数据:
# Somewhere in flask
@app.route("/mylist")
def mylist():
# get all items belong to Bob
grouped_items = Item.query.filter_by(owner_id = 1 ).... # then chain the result to somehow group by custom_name ?
return render_template("mylist.html", grouped_items=grouped_items)
然后我想根据自定义\u名称来渲染它:
<!-- mylist.html ...in pseudocode!... -->
{% for group in grouped_items %}
<span>Item Custom name: {{ group.custom_name }}</span>
{% for item in group %}
<span>{{ item.name }}</span>
{% endfor %}
{% endfor %}
我知道我可以创建自己的字典,使用custom\u name
作为键,值是具有该自定义名称的项目列表,但我想知道是否可以直接从flask sqlalchemy进行分组,而不是手动循环查询结果来构建dict
Item Custom name: reading_list
book1
book2
Item Custom name: entertainment
tv