【发布时间】:2017-08-04 02:58:56
【问题描述】:
我希望使用 Flask-SQlAlchemy 在 Flask-Admin 中按日期时间列的时间部分进行过滤。
到目前为止我的尝试是:
class BaseTimeBetweenFilter(filters.TimeBetweenFilter):
def apply(self, query, value, alias=None):
return query.filter(cast(Doctor.datetime, Time) >= value[0],
cast(Doctor.datetime, Time) <= value[1]).all()
我已经显示了时间选择器,如果显示了
print (value[0])
或
print (value[1])
它按预期打印出输入的时间。但是查询不工作。
管理面板_1 |响应 = self.full_dispatch_request()
管理面板_1 |文件“/usr/local/lib/python3.5/dist-packages/flask/app.py”,第 1641 行,在 full_dispatch_request 中
管理面板_1 | rv = self.handle_user_exception(e)
管理面板_1 |文件“/usr/local/lib/python3.5/dist-packages/flask/app.py”,第 1544 行,在 handle_user_exception 中
管理面板_1 | reraise(exc_type, exc_value, tb)
管理面板_1 |文件“/usr/local/lib/python3.5/dist-packages/flask/_compat.py”,第 33 行,重新提出
管理面板_1 |提升价值
管理面板_1 |文件“/usr/local/lib/python3.5/dist-packages/flask/app.py”,第 1639 行,在 full_dispatch_request 中
管理面板_1 | rv = self.dispatch_request()
管理面板_1 |文件“/usr/local/lib/python3.5/dist-packages/flask/app.py”,第 1625 行,在 dispatch_request 中
管理面板_1 |返回 self.view_functionsrule.endpoint
管理面板_1 |文件“/usr/local/lib/python3.5/dist-packages/flask_admin/base.py”,第 69 行,在内部
管理面板_1 | return self._run_view(f, *args, **kwargs)
管理面板_1 | _run_view 中的文件“/usr/local/lib/python3.5/dist-packages/flask_admin/base.py”,第 368 行
管理面板_1 |返回 fn(self, *args, **kwargs)
管理面板_1 |文件“/usr/local/lib/python3.5/dist-packages/flask_admin/model/base.py”,第 1818 行,在 index_view 中
管理面板_1 | view_args.search, view_args.filters)
管理面板_1 |文件“/usr/local/lib/python3.5/dist-packages/flask_admin/contrib/sqla/view.py”,第 975 行,在 get_list 中
管理面板_1 | count = count_query.scalar() if count_query else None
管理面板_1 | AttributeError:“列表”对象没有属性“标量”
另外,我从 sqlalchemy 导入 Time 和 Cast,这样可以吗,还是应该从 flask-sqlalchemy 获取?
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import Time, cast
【问题讨论】:
标签: flask-sqlalchemy flask-admin