在flaskadmin列表视图中对属性排序

2024-05-13 21:58:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有出生日期字段的模型,我使用python decorator@property创建了一个年龄字段,我希望能够在flask admin列表视图中按年龄排序,但我得到了以下错误:

sqlalchemy.exc.ArgumentError: SQL expression object expected, got object of type <class 'property'> instead

我就是这样做的:

class User(db.model, UserMixin):
...
data_de_nascimento = db.Column(db.Date)
...
@property
def idade(self):
    today = date.today()
    born = self.data_de_nascimento
    return today.year - born.year - ((today.month, today.day) < (born.month, born.day))

我已经尝试为SQLAlchemy@hybrid_属性更改@property,但我不确定这是否是正确的方法,因为我并不真正理解它。尽管如此,我还是犯了以下错误:(我试着阅读文档,但没有太多意义)

AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object associated with User.data_de_nascimento has an attribute 'year'

我不知道该怎么做,有人能给我一个简单的工作解决方案吗

我的第一个想法是直接在数据库中保存年龄,但我不知道如何在每次用户生日时更新它

我还认为,如果我可以更改Flask admin生成的查询,只按DOB而不是年龄进行排序,这将是可行的,但我还没有找到一种方法来做到这一点


Tags: dbdatatodayobjectadmin排序错误de