Python 可以在烧瓶炼金术中返回分组行吗?

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

我试图取回根据某个列分组的行,但我不确定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 = 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