在声明性使用 SQLalchemy的官方 Flask 文档中,使用了以下片段:
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('sqlite:////tmp/test.db', convert_unicode=True)
db_session = scoped_session(sessionmaker(autocommit=False,
                                         autoflush=False,
                                         bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()
Run Code Online (Sandbox Code Playgroud)
现在,我根本不明白最后一行在做什么。即做什么
Base.query = db_session.query_property()
Run Code Online (Sandbox Code Playgroud)
施行。 为什么那条线在那里?
在我的应用程序中,我只是db_session用于每个数据库操作。现在我玩了一点,发现在交互式会话或纯 python 脚本的上下文中,该行什么都不执行!
例如这个脚本打印 True
import sqlalchemy as sq
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, scoped_session
eng = sq.create_engine('sqlite://')
Base = declarative_base()
db_session = scoped_session(sessionmaker(bind=eng))
Base.query = db_session.query_property()
Base.query
print(Base.query == None) …Run Code Online (Sandbox Code Playgroud) 在我的表单视图中,每个记录都应该有一个图标,其中包含重定向到特定网站的图标.例如:
记录1 | www.test.com/a
记录2 | www.test.com/b
如何在点击时创建这样的重定向?
我尝试了一个按钮 - 但我不知道如何在动作中重定向:
<form string="MyForm">
                <sheet>
                    <group>
                          <page string="MyPage">
                                <field name="MyRecords" widget="one2many_list">
                                    <tree string="Records">
                                        <field name="identifier"/>
                                        <field name="recordname"/>
                                        <button type="object" name="open_record_action" icon="fa-external-link" />
                                    </tree>
                                </field>
                            </page>
                            <page>
                            ...
                            </page>
                    </group>
                    <group>
                    ...
                    </group>
                </sheet>
Run Code Online (Sandbox Code Playgroud)
在模型中:
@api.multi
    def open_record_action(self, context):
        ????
Run Code Online (Sandbox Code Playgroud)
另外一种可能的解决方案是将链接存储在模型的字段中,并以这种方式在视图中实现它:
<field name="url" widget="url"/>
Run Code Online (Sandbox Code Playgroud)
但是使用此解决方案,将显示链接.但我只想看到图标.
任何想法如何解决?