1

我目前正在使用 Flask-Admin 创建管理屏幕,但遇到了障碍。假设我有两个如下所示的类:

class Part(db.Model):
  id = db.Column(db.Integer, primary_key=True, unique=True)
  part_data = db.relationship("PartHistory", backref="part")
  name = db.Column(db.String(255))

class PartHistory(db.Model):
  id = db.Column(db.Integer, primary_key=True, unique=True)
  part_id = db.Column(db.Integer, db.ForeignKey('part.id'))
  date_checked = db.Column(db.Date)

Part 在 PartHistory 上有一对多的关系。我想创建一个视图,在一个列中显示零件名称,在另一列中显示第一个 date_checked。我试过这样的事情:

column_list = ("name", "part_data[0].date_checked")

但这似乎不起作用。似乎我正在以错误的方式解决这个问题。任何提示将不胜感激。

4

1 回答 1

3

一种方法是使用column-property定义一个计算列,该列将填充您需要的字段。下面我使用了一个min值,但您可以构造任意查询以通过 ID 获取第一个查询(实现该查询的最佳方法是特定于后端):

class Part(db.Model):
  # ...
  date_checked = db.column_property(
        db.select([db.func.min(PartHistory.date_checked)]).\
            where(PartHistory.part_id==id).\
            correlate_except(PartHistory)
    )

请注意,您可能无法按此列排序。

于 2014-01-30T10:41:35.593 回答