Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
搞清楚原因了: 员工 唯一性 验证代码中,获取count 变量处 是有问题的。
count = self.env[' archives.common_archive'].search_count( [('name', '=', self.name), ('id', '!=', self.id)]) 这一行有问题, env 后面跟的 环境 是错误的, 换成 self._name 就好了, 略显尴尬。。
已经找到了解决方法,在write 方法中,参数value--> type <list> 包裹的值,如下图: 7b5e4873-509d-4c37-8a1c-d1803689ca68-image.png 其中value中的list: 第一个元素 表示 操作类型,0:添加明细, 1:修改, 2:删除, 4:不变,第二个元素 表示 明细id,第三个元素 表示 修改的内容。
要获得修改前的值,可以根据其中第二个元素 id,通过browse 方法 就可以查询到 修改前的 数据行。
如果各位有更好的方法可以在下面继续留言。
@digitalsatori 可以了,万分感谢!!
这个应该是两个两个数据模型吧。可以添加一个关系型数据,例如:many2one,或者many2many这种的来使得两个模型之间有联系,你可以通过def方法来实现。因为不知道你们的项目是什么样子的。你可以试试?
参考方案: 1)在views中定义一个client action: Test myproject.test current
2)使用一个html a元素来触发这个action: Test
3)编写一个js widget,具体写法参考文档:https://www.odoo.com/documentation/12.0/reference/javascript_reference.html#widgets; 主要做三件事: a)设定模板template,根据要显示tree的需求去定制; b)定义willStart函数,使用._rpc()函数与后端通讯获得模型数据; c)定义start()函数,使用上一步获取的数据来render画面; 完成widget之后,调用core.action_registry.add()来注册这个widget,使得点击上文的html a元素,就会显示这个widget
4)最后一步,在后端模型类添加方法,用于被js _rpc()函数调用来获取数据;
“数据库视图”(SQL VIEW)也可以理解为“虚拟表”,它是对数据库一个或多个表的查询结果集。结果集的内容会自动根据其查询表的数据的更新而更新。
Odoo的report就是基于这个“虚拟表”的数据根据不同用户所设定的查询条件返回并展示不同的数据结果。