Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask管理员:混合属性可以搜索吗?_Python_Flask Sqlalchemy_Flask Admin - Fatal编程技术网

Python Flask管理员:混合属性可以搜索吗?

Python Flask管理员:混合属性可以搜索吗?,python,flask-sqlalchemy,flask-admin,Python,Flask Sqlalchemy,Flask Admin,在使用Flask Admin创建的列表视图中,我添加了两列sqlalchemy对象,它们实际上是在我的对象类中使用混合属性计算的 class MyClass(db.Model): @hybrid_property def state(self): now = datetime.datetime.now() state = 'OK' for panne in self.pannes: if panne.f_

在使用Flask Admin创建的列表视图中,我添加了两列sqlalchemy对象,它们实际上是在我的对象类中使用混合属性计算的


class MyClass(db.Model):

    @hybrid_property
    def state(self):
        now = datetime.datetime.now()
        state = 'OK'
        for panne in self.pannes:
            if panne.f_indispo < now:
                continue
            if panne.d_indispo <= now and panne.f_indispo >= now:
                state = 'KO'
                break
            if panne.d_indispo > now:
                state = 'PR'
        return state

    @hybrid_property
    def station_name(self):
        if app.config['STATIONS'] is not None and self.id_station in app.config['STATIONS']:
            return app.config['STATIONS'][self.id_station]
        return unicode(self.id_station)
除了我的两个“混合列”既不能搜索也不能排序之外,一切都正常。 如果我将它们添加到列可搜索列表中,我会得到:

“国家”财产:

File "/usr/lib/python2.6/site-packages/Flask_Admin-1.0.8-py2.6.egg/flask_admin/contrib/sqla/view.py", line 271, in __init__ super(ModelView, self).__init__(model, name, category, endpoint, url) File "/usr/lib/python2.6/site-packages/Flask_Admin-1.0.8-py2.6.egg/flask_admin/model/base.py", line 515, in __init__ self._refresh_cache() File "/usr/lib/python2.6/site-packages/Flask_Admin-1.0.8-py2.6.egg/flask_admin/model/base.py", line 540, in _refresh_cache self._search_supported = self.init_search() File "/usr/lib/python2.6/site-packages/Flask_Admin-1.0.8-py2.6.egg/flask_admin/contrib/sqla/view.py", line 410, in init_search for column in self._get_columns_for_field(p): File "/usr/lib/python2.6/site-packages/Flask_Admin-1.0.8-py2.6.egg/flask_admin/contrib/sqla/view.py", line 379, in _get_columns_for_field attr = getattr(self.model, field, None) File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.9.6-py2.6-linux-x86_64.egg/sqlalchemy/ext/hybrid.py", line 738, in __get__ return self.expr(owner) File "/var/www/***/app/***.py", line 90, in state for panne in self.pannes: File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.9.6-py2.6-linux-x86_64.egg/sqlalchemy/sql/operators.py", line 338, in __getitem__ return self.operate(getitem, index) File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.9.6-py2.6-linux-x86_64.egg/sqlalchemy/orm/attributes.py", line 171, in operate return op(self.comparator, *other, **kwargs) File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.9.6-py2.6-linux-x86_64.egg/sqlalchemy/sql/operators.py", line 338, in __getitem__ return self.operate(getitem, index) File "/usr/lib/python2.6/site-packages/SQLAlchemy-0.9.6-py2.6-linux-x86_64.egg/sqlalchemy/sql/operators.py", line 183, in operate raise NotImplementedError(str(op)) NotImplementedError: 文件“/usr/lib/python2.6/site packages/Flask_Admin-1.0.8-py2.6.egg/Flask_Admin/contrib/sqla/view.py”,第271行,在__ super(ModelView,self)。\uuuuu init\uuuuuu(模型、名称、类别、端点、url) 文件“/usr/lib/python2.6/site packages/Flask_Admin-1.0.8-py2.6.egg/Flask_Admin/model/base.py”,第515行,在__ self.\u刷新\u缓存() 文件“/usr/lib/python2.6/site packages/Flask_Admin-1.0.8-py2.6.egg/Flask_Admin/model/base.py”,第540行,在刷新缓存中 self.\u search\u supported=self.init\u search() 文件“/usr/lib/python2.6/site packages/Flask_Admin-1.0.8-py2.6.egg/Flask_Admin/contrib/sqla/view.py”,第410行,在初始搜索中 对于self中的列。\u获取\u列\u用于\u字段(p): 文件“/usr/lib/python2.6/site packages/Flask\u Admin-1.0.8-py2.6.egg/Flask\u Admin/contrib/sqla/view.py”,第379行,在\u字段的\u get\u列中 attr=getattr(self.model,字段,无) 文件“/usr/lib/python2.6/site packages/SQLAlchemy-0.9.6-py2.6-linux-x86_64.egg/SQLAlchemy/ext/hybrid.py”,第738行,在__ 返回self.expr(所有者) 文件“/var/www/***/app/***.py”,第90行,处于状态 对于self.pannes中的panne: 文件“/usr/lib/python2.6/site packages/SQLAlchemy-0.9.6-py2.6-linux-x86_64.egg/SQLAlchemy/sql/operators.py”,第338行,在u getitem中__ 返回self.operate(getitem,index) 文件“/usr/lib/python2.6/site packages/SQLAlchemy-0.9.6-py2.6-linux-x86_64.egg/SQLAlchemy/orm/attributes.py”,第171行,在operate中 返回op(自比较器,*其他,**kwargs) 文件“/usr/lib/python2.6/site packages/SQLAlchemy-0.9.6-py2.6-linux-x86_64.egg/SQLAlchemy/sql/operators.py”,第338行,在u getitem中__ 返回self.operate(getitem,index) 文件“/usr/lib/python2.6/site packages/SQLAlchemy-0.9.6-py2.6-linux-x86_64.egg/SQLAlchemy/sql/operators.py”,第183行,在operate中 引发未实施错误(str(op)) 未实现错误: “站点名称”属性:

File "/usr/lib/python2.6/site-packages/Flask_Admin-1.0.8-py2.6.egg/flask_admin/contrib/sqla/view.py", line 271, in __init__ super(ModelView, self).__init__(model, name, category, endpoint, url) File "/usr/lib/python2.6/site-packages/Flask_Admin-1.0.8-py2.6.egg/flask_admin/model/base.py", line 515, in __init__ self._refresh_cache() File "/usr/lib/python2.6/site-packages/Flask_Admin-1.0.8-py2.6.egg/flask_admin/model/base.py", line 540, in _refresh_cache self._search_supported = self.init_search() File "/usr/lib/python2.6/site-packages/Flask_Admin-1.0.8-py2.6.egg/flask_admin/contrib/sqla/view.py", line 410, in init_search for column in self._get_columns_for_field(p): File "/usr/lib/python2.6/site-packages/Flask_Admin-1.0.8-py2.6.egg/flask_admin/contrib/sqla/view.py", line 390, in _get_columns_for_field raise Exception('Invalid field %s: does not contains any columns.' % field) Exception: Invalid field station_name: does not contains any columns. 文件“/usr/lib/python2.6/site packages/Flask_Admin-1.0.8-py2.6.egg/Flask_Admin/contrib/sqla/view.py”,第271行,在__ super(ModelView,self)。\uuuuu init\uuuuuu(模型、名称、类别、端点、url) 文件“/usr/lib/python2.6/site packages/Flask_Admin-1.0.8-py2.6.egg/Flask_Admin/model/base.py”,第515行,在__ self.\u刷新\u缓存() 文件“/usr/lib/python2.6/site packages/Flask_Admin-1.0.8-py2.6.egg/Flask_Admin/model/base.py”,第540行,在刷新缓存中 self.\u search\u supported=self.init\u search() 文件“/usr/lib/python2.6/site packages/Flask_Admin-1.0.8-py2.6.egg/Flask_Admin/contrib/sqla/view.py”,第410行,在初始搜索中 对于self中的列。\u获取\u列\u用于\u字段(p): 文件“/usr/lib/python2.6/site packages/Flask\u Admin-1.0.8-py2.6.egg/Flask\u Admin/contrib/sqla/view.py”,第390行,在\u字段的\u get\u列中 引发异常(“无效字段%s:不包含任何列”。%field) 异常:无效的字段站\u name:不包含任何列。 问题是: 在这种情况下,是否可以使用hybrid_属性,或者我应该尝试其他解决方案?
如果可能的话,我暂时不知道如何解决这些错误。

这是最近在这个拉取请求中修复的:


现在,有一个使用混合属性的示例:

第二个链接已断开。请查收。 File "/usr/lib/python2.6/site-packages/Flask_Admin-1.0.8-py2.6.egg/flask_admin/contrib/sqla/view.py", line 271, in __init__ super(ModelView, self).__init__(model, name, category, endpoint, url) File "/usr/lib/python2.6/site-packages/Flask_Admin-1.0.8-py2.6.egg/flask_admin/model/base.py", line 515, in __init__ self._refresh_cache() File "/usr/lib/python2.6/site-packages/Flask_Admin-1.0.8-py2.6.egg/flask_admin/model/base.py", line 540, in _refresh_cache self._search_supported = self.init_search() File "/usr/lib/python2.6/site-packages/Flask_Admin-1.0.8-py2.6.egg/flask_admin/contrib/sqla/view.py", line 410, in init_search for column in self._get_columns_for_field(p): File "/usr/lib/python2.6/site-packages/Flask_Admin-1.0.8-py2.6.egg/flask_admin/contrib/sqla/view.py", line 390, in _get_columns_for_field raise Exception('Invalid field %s: does not contains any columns.' % field) Exception: Invalid field station_name: does not contains any columns.