翼度科技»论坛 编程开发 python 查看内容

odoo 开发入门教程系列-基本视图

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
在上一章中已经看到,odoo能够为给定模型生成默认视图。实际上,默认视图对于业务应用程序来说是不可接受的。相反,我们至少应该以逻辑的方式组织各个字段。
视图是在带有操作和菜单的XML文件中定义的。它们是ir.ui.view model的实例。
在我们的estate模块中,我们需要以逻辑方式组织字段:

  • 在列表(树)视图中,我们希望显示的不仅仅是名称。
  • 在表单视图中,应该对字段进行分组。
  • 在搜索视图中,我们必须能够搜索的不仅仅是名称。具体来说,我们需要"Available"的地产筛选器和按"postcode"分组的快捷方式
List(列表)

参考: 主题关联文档可参考List.
列表视图,也叫树(tree)视图, 以表格的形式显示记录。
视图根元素为。其最基础版本仅简单的列出要在表中显示的所有字段(其中每个字段都是一列):
  1. <tree string="Tests">
  2.     <field name="name"/>
  3.     <field name="last_seen"/>
  4. </tree>
复制代码
练习 -- 添加一个自定义列表视图
在合适的XML文件中为estate.property model定义一个列表视图。 一个简单的示例
修改odoo14/custom/estate/views/estate_property_views.xml
  1. <tree string="Tests">
  2.     <field name="name"/>
  3.     <field name="last_seen"/>
  4. </tree>    Properties<tree string="Tests">
  5.     <field name="name"/>
  6.     <field name="last_seen"/>
  7. </tree>estate.property<tree string="Tests">
  8.     <field name="name"/>
  9.     <field name="last_seen"/>
  10. </tree>tree,form<tree string="Tests">
  11.     <field name="name"/>
  12.     <field name="last_seen"/>
  13. </tree><tree string="Tests">
  14.     <field name="name"/>
  15.     <field name="last_seen"/>
  16. </tree><tree string="Tests">
  17.     <field name="name"/>
  18.     <field name="last_seen"/>
  19. </tree>estate.property.tree<tree string="Tests">
  20.     <field name="name"/>
  21.     <field name="last_seen"/>
  22. </tree>estate.property<tree string="Tests">
  23.     <field name="name"/>
  24.     <field name="last_seen"/>
  25. </tree><tree string="Tests">
  26.     <field name="name"/>
  27.     <field name="last_seen"/>
  28. </tree><tree string="Tests">
  29.     <field name="name"/>
  30.     <field name="last_seen"/>
  31. </tree><tree string="Tests">
  32.     <field name="name"/>
  33.     <field name="last_seen"/>
  34. </tree><tree string="Tests">
  35.     <field name="name"/>
  36.     <field name="last_seen"/>
  37. </tree><tree string="Tests">
  38.     <field name="name"/>
  39.     <field name="last_seen"/>
  40. </tree><tree string="Tests">
  41.     <field name="name"/>
  42.     <field name="last_seen"/>
  43. </tree><tree string="Tests">
  44.     <field name="name"/>
  45.     <field name="last_seen"/>
  46. </tree><tree string="Tests">
  47.     <field name="name"/>
  48.     <field name="last_seen"/>
  49. </tree><tree string="Tests">
  50.     <field name="name"/>
  51.     <field name="last_seen"/>
  52. </tree><tree string="Tests">
  53.     <field name="name"/>
  54.     <field name="last_seen"/>
  55. </tree><tree string="Tests">
  56.     <field name="name"/>
  57.     <field name="last_seen"/>
  58. </tree><tree string="Tests">
  59.     <field name="name"/>
  60.     <field name="last_seen"/>
  61. </tree><tree string="Tests">
  62.     <field name="name"/>
  63.     <field name="last_seen"/>
  64. </tree><tree string="Tests">
  65.     <field name="name"/>
  66.     <field name="last_seen"/>
  67. </tree><tree string="Tests">
  68.     <field name="name"/>
  69.     <field name="last_seen"/>
  70. </tree><tree string="Tests">
  71.     <field name="name"/>
  72.     <field name="last_seen"/>
  73. </tree><tree string="Tests">
  74.     <field name="name"/>
  75.     <field name="last_seen"/>
  76. </tree><tree string="Tests">
  77.     <field name="name"/>
  78.     <field name="last_seen"/>
  79. </tree>   
复制代码
注意:暂时不要添加示例中的 editable="bottom"属性
说明:
  1. <field name="name">自定义列表名称</field>
  2. <field name="model">模型名称,即_name的值</field>
复制代码
重启服务,浏览器验证,效果如下:

说明:如果未给添加string属性,则显示如下:

Form(表单)

参考: 主题关联文档可以查看Form.
表单用于创建和编辑单条件记录,其根元素为 ,由高层框架元素(group和notebook)和交互元素 (按钮和字段):
  1. <tree string="Tests">
  2.     <field name="name"/>
  3.     <field name="last_seen"/>
  4. </tree><tree string="Tests">
  5.     <field name="name"/>
  6.     <field name="last_seen"/>
  7. </tree><tree string="Tests">
  8.     <field name="name"/>
  9.     <field name="last_seen"/>
  10. </tree><tree string="Tests">
  11.     <field name="name"/>
  12.     <field name="last_seen"/>
  13. </tree><tree string="Tests">
  14.     <field name="name"/>
  15.     <field name="last_seen"/>
  16. </tree><tree string="Tests">
  17.     <field name="name"/>
  18.     <field name="last_seen"/>
  19. </tree><tree string="Tests">
  20.     <field name="name"/>
  21.     <field name="last_seen"/>
  22. </tree><tree string="Tests">
  23.     <field name="name"/>
  24.     <field name="last_seen"/>
  25. </tree><tree string="Tests">
  26.     <field name="name"/>
  27.     <field name="last_seen"/>
  28. </tree><tree string="Tests">
  29.     <field name="name"/>
  30.     <field name="last_seen"/>
  31. </tree><tree string="Tests">
  32.     <field name="name"/>
  33.     <field name="last_seen"/>
  34. </tree><tree string="Tests">
  35.     <field name="name"/>
  36.     <field name="last_seen"/>
  37. </tree><tree string="Tests">
  38.     <field name="name"/>
  39.     <field name="last_seen"/>
  40. </tree><tree string="Tests">
  41.     <field name="name"/>
  42.     <field name="last_seen"/>
  43. </tree><tree string="Tests">
  44.     <field name="name"/>
  45.     <field name="last_seen"/>
  46. </tree><tree string="Tests">
  47.     <field name="name"/>
  48.     <field name="last_seen"/>
  49. </tree><tree string="Tests">
  50.     <field name="name"/>
  51.     <field name="last_seen"/>
  52. </tree><tree string="Tests">
  53.     <field name="name"/>
  54.     <field name="last_seen"/>
  55. </tree><tree string="Tests">
  56.     <field name="name"/>
  57.     <field name="last_seen"/>
  58. </tree><tree string="Tests">
  59.     <field name="name"/>
  60.     <field name="last_seen"/>
  61. </tree><tree string="Tests">
  62.     <field name="name"/>
  63.     <field name="last_seen"/>
  64. </tree><tree string="Tests">
  65.     <field name="name"/>
  66.     <field name="last_seen"/>
  67. </tree>   
复制代码
可以使用常规HTML标记(如"div"和"h1")以及"class"属性(Odoo提供了一些内置类)来微调外观。
一个简单示例.
练习 -- 添加自定义表单视图
在合适的XML文件中为estate.property 定义视图
为了避免每次修改视图时都重新启动服务器,可以在启动服务器时添加--dev-xml,以便只刷新页面就可以查看视图修改,如下:
  1. python odoo-bin --addons-path=custom,odoo/addons -r myodoo -w test123 -d odoo -u estate --dev xml
复制代码
修改odoo14/custom/estate/views/estate_property_views.xml
  1. <tree string="Tests">
  2.     <field name="name"/>
  3.     <field name="last_seen"/>
  4. </tree>    Properties<tree string="Tests">
  5.     <field name="name"/>
  6.     <field name="last_seen"/>
  7. </tree>estate.property<tree string="Tests">
  8.     <field name="name"/>
  9.     <field name="last_seen"/>
  10. </tree>tree,form<tree string="Tests">
  11.     <field name="name"/>
  12.     <field name="last_seen"/>
  13. </tree><tree string="Tests">
  14.     <field name="name"/>
  15.     <field name="last_seen"/>
  16. </tree>Properties<tree string="Tests">
  17.     <field name="name"/>
  18.     <field name="last_seen"/>
  19. </tree>estate.property<tree string="Tests">
  20.     <field name="name"/>
  21.     <field name="last_seen"/>
  22. </tree>tree,form<tree string="Tests">
  23.     <field name="name"/>
  24.     <field name="last_seen"/>
  25. </tree><tree string="Tests">
  26.     <field name="name"/>
  27.     <field name="last_seen"/>
  28. </tree>estate.property.tree<tree string="Tests">
  29.     <field name="name"/>
  30.     <field name="last_seen"/>
  31. </tree>estate.property<tree string="Tests">
  32.     <field name="name"/>
  33.     <field name="last_seen"/>
  34. </tree><tree string="Tests">
  35.     <field name="name"/>
  36.     <field name="last_seen"/>
  37. </tree><tree string="Tests">
  38.     <field name="name"/>
  39.     <field name="last_seen"/>
  40. </tree><tree string="Tests">
  41.     <field name="name"/>
  42.     <field name="last_seen"/>
  43. </tree><tree string="Tests">
  44.     <field name="name"/>
  45.     <field name="last_seen"/>
  46. </tree><tree string="Tests">
  47.     <field name="name"/>
  48.     <field name="last_seen"/>
  49. </tree><tree string="Tests">
  50.     <field name="name"/>
  51.     <field name="last_seen"/>
  52. </tree><tree string="Tests">
  53.     <field name="name"/>
  54.     <field name="last_seen"/>
  55. </tree><tree string="Tests">
  56.     <field name="name"/>
  57.     <field name="last_seen"/>
  58. </tree><tree string="Tests">
  59.     <field name="name"/>
  60.     <field name="last_seen"/>
  61. </tree><tree string="Tests">
  62.     <field name="name"/>
  63.     <field name="last_seen"/>
  64. </tree><tree string="Tests">
  65.     <field name="name"/>
  66.     <field name="last_seen"/>
  67. </tree><tree string="Tests">
  68.     <field name="name"/>
  69.     <field name="last_seen"/>
  70. </tree><tree string="Tests">
  71.     <field name="name"/>
  72.     <field name="last_seen"/>
  73. </tree><tree string="Tests">
  74.     <field name="name"/>
  75.     <field name="last_seen"/>
  76. </tree><tree string="Tests">
  77.     <field name="name"/>
  78.     <field name="last_seen"/>
  79. </tree><tree string="Tests">
  80.     <field name="name"/>
  81.     <field name="last_seen"/>
  82. </tree><tree string="Tests">
  83.     <field name="name"/>
  84.     <field name="last_seen"/>
  85. </tree><tree string="Tests">
  86.     <field name="name"/>
  87.     <field name="last_seen"/>
  88. </tree><tree string="Tests">
  89.     <field name="name"/>
  90.     <field name="last_seen"/>
  91. </tree><tree string="Tests">
  92.     <field name="name"/>
  93.     <field name="last_seen"/>
  94. </tree><tree string="Tests">
  95.     <field name="name"/>
  96.     <field name="last_seen"/>
  97. </tree>estate.property.form<tree string="Tests">
  98.     <field name="name"/>
  99.     <field name="last_seen"/>
  100. </tree>estate.property<tree string="Tests">
  101.     <field name="name"/>
  102.     <field name="last_seen"/>
  103. </tree><tree string="Tests">
  104.     <field name="name"/>
  105.     <field name="last_seen"/>
  106. </tree><tree string="Tests">
  107.     <field name="name"/>
  108.     <field name="last_seen"/>
  109. </tree><tree string="Tests">
  110.     <field name="name"/>
  111.     <field name="last_seen"/>
  112. </tree><tree string="Tests">
  113.     <field name="name"/>
  114.     <field name="last_seen"/>
  115. </tree><tree string="Tests">
  116.     <field name="name"/>
  117.     <field name="last_seen"/>
  118. </tree><tree string="Tests">
  119.     <field name="name"/>
  120.     <field name="last_seen"/>
  121. </tree>[size=6]<tree string="Tests">
  122.     <field name="name"/>
  123.     <field name="last_seen"/>
  124. </tree><tree string="Tests">
  125.     <field name="name"/>
  126.     <field name="last_seen"/>
  127. </tree><tree string="Tests">
  128.     <field name="name"/>
  129.     <field name="last_seen"/>
  130. </tree><tree string="Tests">
  131.     <field name="name"/>
  132.     <field name="last_seen"/>
  133. </tree><tree string="Tests">
  134.     <field name="name"/>
  135.     <field name="last_seen"/>
  136. </tree>    [/size]
  137. <tree string="Tests">
  138.     <field name="name"/>
  139.     <field name="last_seen"/>
  140. </tree><tree string="Tests">
  141.     <field name="name"/>
  142.     <field name="last_seen"/>
  143. </tree><tree string="Tests">
  144.     <field name="name"/>
  145.     <field name="last_seen"/>
  146. </tree><tree string="Tests">
  147.     <field name="name"/>
  148.     <field name="last_seen"/>
  149. </tree><tree string="Tests">
  150.     <field name="name"/>
  151.     <field name="last_seen"/>
  152. </tree><tree string="Tests">
  153.     <field name="name"/>
  154.     <field name="last_seen"/>
  155. </tree><tree string="Tests">
  156.     <field name="name"/>
  157.     <field name="last_seen"/>
  158. </tree><tree string="Tests">
  159.     <field name="name"/>
  160.     <field name="last_seen"/>
  161. </tree><tree string="Tests">
  162.     <field name="name"/>
  163.     <field name="last_seen"/>
  164. </tree><tree string="Tests">
  165.     <field name="name"/>
  166.     <field name="last_seen"/>
  167. </tree><tree string="Tests">
  168.     <field name="name"/>
  169.     <field name="last_seen"/>
  170. </tree><tree string="Tests">
  171.     <field name="name"/>
  172.     <field name="last_seen"/>
  173. </tree><tree string="Tests">
  174.     <field name="name"/>
  175.     <field name="last_seen"/>
  176. </tree><tree string="Tests">
  177.     <field name="name"/>
  178.     <field name="last_seen"/>
  179. </tree><tree string="Tests">
  180.     <field name="name"/>
  181.     <field name="last_seen"/>
  182. </tree><tree string="Tests">
  183.     <field name="name"/>
  184.     <field name="last_seen"/>
  185. </tree><tree string="Tests">
  186.     <field name="name"/>
  187.     <field name="last_seen"/>
  188. </tree><tree string="Tests">
  189.     <field name="name"/>
  190.     <field name="last_seen"/>
  191. </tree><tree string="Tests">
  192.     <field name="name"/>
  193.     <field name="last_seen"/>
  194. </tree><tree string="Tests">
  195.     <field name="name"/>
  196.     <field name="last_seen"/>
  197. </tree><tree string="Tests">
  198.     <field name="name"/>
  199.     <field name="last_seen"/>
  200. </tree><tree string="Tests">
  201.     <field name="name"/>
  202.     <field name="last_seen"/>
  203. </tree><tree string="Tests">
  204.     <field name="name"/>
  205.     <field name="last_seen"/>
  206. </tree><tree string="Tests">
  207.     <field name="name"/>
  208.     <field name="last_seen"/>
  209. </tree><tree string="Tests">
  210.     <field name="name"/>
  211.     <field name="last_seen"/>
  212. </tree><tree string="Tests">
  213.     <field name="name"/>
  214.     <field name="last_seen"/>
  215. </tree><tree string="Tests">
  216.     <field name="name"/>
  217.     <field name="last_seen"/>
  218. </tree><tree string="Tests">
  219.     <field name="name"/>
  220.     <field name="last_seen"/>
  221. </tree><tree string="Tests">
  222.     <field name="name"/>
  223.     <field name="last_seen"/>
  224. </tree><tree string="Tests">
  225.     <field name="name"/>
  226.     <field name="last_seen"/>
  227. </tree><tree string="Tests">
  228.     <field name="name"/>
  229.     <field name="last_seen"/>
  230. </tree><tree string="Tests">
  231.     <field name="name"/>
  232.     <field name="last_seen"/>
  233. </tree><tree string="Tests">
  234.     <field name="name"/>
  235.     <field name="last_seen"/>
  236. </tree><tree string="Tests">
  237.     <field name="name"/>
  238.     <field name="last_seen"/>
  239. </tree><tree string="Tests">
  240.     <field name="name"/>
  241.     <field name="last_seen"/>
  242. </tree><tree string="Tests">
  243.     <field name="name"/>
  244.     <field name="last_seen"/>
  245. </tree><tree string="Tests">
  246.     <field name="name"/>
  247.     <field name="last_seen"/>
  248. </tree><tree string="Tests">
  249.     <field name="name"/>
  250.     <field name="last_seen"/>
  251. </tree><tree string="Tests">
  252.     <field name="name"/>
  253.     <field name="last_seen"/>
  254. </tree><tree string="Tests">
  255.     <field name="name"/>
  256.     <field name="last_seen"/>
  257. </tree><tree string="Tests">
  258.     <field name="name"/>
  259.     <field name="last_seen"/>
  260. </tree><tree string="Tests">
  261.     <field name="name"/>
  262.     <field name="last_seen"/>
  263. </tree><tree string="Tests">
  264.     <field name="name"/>
  265.     <field name="last_seen"/>
  266. </tree><tree string="Tests">
  267.     <field name="name"/>
  268.     <field name="last_seen"/>
  269. </tree><tree string="Tests">
  270.     <field name="name"/>
  271.     <field name="last_seen"/>
  272. </tree><tree string="Tests">
  273.     <field name="name"/>
  274.     <field name="last_seen"/>
  275. </tree><tree string="Tests">
  276.     <field name="name"/>
  277.     <field name="last_seen"/>
  278. </tree><tree string="Tests">
  279.     <field name="name"/>
  280.     <field name="last_seen"/>
  281. </tree><tree string="Tests">
  282.     <field name="name"/>
  283.     <field name="last_seen"/>
  284. </tree><tree string="Tests">
  285.     <field name="name"/>
  286.     <field name="last_seen"/>
  287. </tree><tree string="Tests">
  288.     <field name="name"/>
  289.     <field name="last_seen"/>
  290. </tree><tree string="Tests">
  291.     <field name="name"/>
  292.     <field name="last_seen"/>
  293. </tree><tree string="Tests">
  294.     <field name="name"/>
  295.     <field name="last_seen"/>
  296. </tree><tree string="Tests">
  297.     <field name="name"/>
  298.     <field name="last_seen"/>
  299. </tree><tree string="Tests">
  300.     <field name="name"/>
  301.     <field name="last_seen"/>
  302. </tree><tree string="Tests">
  303.     <field name="name"/>
  304.     <field name="last_seen"/>
  305. </tree><tree string="Tests">
  306.     <field name="name"/>
  307.     <field name="last_seen"/>
  308. </tree><tree string="Tests">
  309.     <field name="name"/>
  310.     <field name="last_seen"/>
  311. </tree><tree string="Tests">
  312.     <field name="name"/>
  313.     <field name="last_seen"/>
  314. </tree><tree string="Tests">
  315.     <field name="name"/>
  316.     <field name="last_seen"/>
  317. </tree><tree string="Tests">
  318.     <field name="name"/>
  319.     <field name="last_seen"/>
  320. </tree><tree string="Tests">
  321.     <field name="name"/>
  322.     <field name="last_seen"/>
  323. </tree><tree string="Tests">
  324.     <field name="name"/>
  325.     <field name="last_seen"/>
  326. </tree><tree string="Tests">
  327.     <field name="name"/>
  328.     <field name="last_seen"/>
  329. </tree><tree string="Tests">
  330.     <field name="name"/>
  331.     <field name="last_seen"/>
  332. </tree><tree string="Tests">
  333.     <field name="name"/>
  334.     <field name="last_seen"/>
  335. </tree><tree string="Tests">
  336.     <field name="name"/>
  337.     <field name="last_seen"/>
  338. </tree><tree string="Tests">
  339.     <field name="name"/>
  340.     <field name="last_seen"/>
  341. </tree><tree string="Tests">
  342.     <field name="name"/>
  343.     <field name="last_seen"/>
  344. </tree><tree string="Tests">
  345.     <field name="name"/>
  346.     <field name="last_seen"/>
  347. </tree><tree string="Tests">
  348.     <field name="name"/>
  349.     <field name="last_seen"/>
  350. </tree><tree string="Tests">
  351.     <field name="name"/>
  352.     <field name="last_seen"/>
  353. </tree><tree string="Tests">
  354.     <field name="name"/>
  355.     <field name="last_seen"/>
  356. </tree><tree string="Tests">
  357.     <field name="name"/>
  358.     <field name="last_seen"/>
  359. </tree><tree string="Tests">
  360.     <field name="name"/>
  361.     <field name="last_seen"/>
  362. </tree><tree string="Tests">
  363.     <field name="name"/>
  364.     <field name="last_seen"/>
  365. </tree><tree string="Tests">
  366.     <field name="name"/>
  367.     <field name="last_seen"/>
  368. </tree><tree string="Tests">
  369.     <field name="name"/>
  370.     <field name="last_seen"/>
  371. </tree><tree string="Tests">
  372.     <field name="name"/>
  373.     <field name="last_seen"/>
  374. </tree><tree string="Tests">
  375.     <field name="name"/>
  376.     <field name="last_seen"/>
  377. </tree><tree string="Tests">
  378.     <field name="name"/>
  379.     <field name="last_seen"/>
  380. </tree><tree string="Tests">
  381.     <field name="name"/>
  382.     <field name="last_seen"/>
  383. </tree><tree string="Tests">
  384.     <field name="name"/>
  385.     <field name="last_seen"/>
  386. </tree><tree string="Tests">
  387.     <field name="name"/>
  388.     <field name="last_seen"/>
  389. </tree><tree string="Tests">
  390.     <field name="name"/>
  391.     <field name="last_seen"/>
  392. </tree><tree string="Tests">
  393.     <field name="name"/>
  394.     <field name="last_seen"/>
  395. </tree>
复制代码
查看效果

Search(搜索)

参考: 本主题相关文档可参考Search.
搜索视图与列表及表单视图略有不同,因为它们不显示内容。尽管它们适用于特定模型,但它们用于过滤其他视图的内容(通常是聚合视图,比如列表). 除了在使用方面的不同,他们的定义方式是一样的。
搜索视图根元素为。该视图最基础的版本是列出需要快捷方式的所有字段:
  1. <tree string="Tests">
  2.     <field name="name"/>
  3.     <field name="last_seen"/>
  4. </tree>
复制代码
Odoo生成的默认搜索视图提供了按name筛选的快捷方式。在自定义搜索视图中添加用户可能过滤的字段是非常常见的。
搜索视图还可以包含元素,这些元素充当预定义搜索的开关。筛选器必须具有以下属性之一:

  • domain:将给定domain添加到当前搜索
  • dontext:添加一些context到当前搜索,使用group_by按给定字段名称对结果分组。
一个简单的示例.
  1. <tree string="Tests">
  2.     <field name="name"/>
  3.     <field name="last_seen"/>
  4. </tree><tree string="Tests">
  5.     <field name="name"/>
  6.     <field name="last_seen"/>
  7. </tree>    delivery.carrier.search<tree string="Tests">
  8.     <field name="name"/>
  9.     <field name="last_seen"/>
  10. </tree>    delivery.carrier<tree string="Tests">
  11.     <field name="name"/>
  12.     <field name="last_seen"/>
  13. </tree><tree string="Tests">
  14.     <field name="name"/>
  15.     <field name="last_seen"/>
  16. </tree><tree string="Tests">
  17.     <field name="name"/>
  18.     <field name="last_seen"/>
  19. </tree><tree string="Tests">
  20.     <field name="name"/>
  21.     <field name="last_seen"/>
  22. </tree><tree string="Tests">
  23.     <field name="name"/>
  24.     <field name="last_seen"/>
  25. </tree><tree string="Tests">
  26.     <field name="name"/>
  27.     <field name="last_seen"/>
  28. </tree><tree string="Tests">
  29.     <field name="name"/>
  30.     <field name="last_seen"/>
  31. </tree><tree string="Tests">
  32.     <field name="name"/>
  33.     <field name="last_seen"/>
  34. </tree><tree string="Tests">
  35.     <field name="name"/>
  36.     <field name="last_seen"/>
  37. </tree><tree string="Tests">
  38.     <field name="name"/>
  39.     <field name="last_seen"/>
  40. </tree><tree string="Tests">
  41.     <field name="name"/>
  42.     <field name="last_seen"/>
  43. </tree><tree string="Tests">
  44.     <field name="name"/>
  45.     <field name="last_seen"/>
  46. </tree><tree string="Tests">
  47.     <field name="name"/>
  48.     <field name="last_seen"/>
  49. </tree><tree string="Tests">
  50.     <field name="name"/>
  51.     <field name="last_seen"/>
  52. </tree><tree string="Tests">
  53.     <field name="name"/>
  54.     <field name="last_seen"/>
  55. </tree><tree string="Tests">
  56.     <field name="name"/>
  57.     <field name="last_seen"/>
  58. </tree><tree string="Tests">
  59.     <field name="name"/>
  60.     <field name="last_seen"/>
  61. </tree><tree string="Tests">
  62.     <field name="name"/>
  63.     <field name="last_seen"/>
  64. </tree><tree string="Tests">
  65.     <field name="name"/>
  66.     <field name="last_seen"/>
  67. </tree><tree string="Tests">
  68.     <field name="name"/>
  69.     <field name="last_seen"/>
  70. </tree><tree string="Tests">
  71.     <field name="name"/>
  72.     <field name="last_seen"/>
  73. </tree><tree string="Tests">
  74.     <field name="name"/>
  75.     <field name="last_seen"/>
  76. </tree><tree string="Tests">
  77.     <field name="name"/>
  78.     <field name="last_seen"/>
  79. </tree><tree string="Tests">
  80.     <field name="name"/>
  81.     <field name="last_seen"/>
  82. </tree><tree string="Tests">
  83.     <field name="name"/>
  84.     <field name="last_seen"/>
  85. </tree><tree string="Tests">
  86.     <field name="name"/>
  87.     <field name="last_seen"/>
  88. </tree>
复制代码
在进一步练习之前,有必要介绍一下domain概念。
domain

引用: 本主题相关文档可参考 Search domains.
在odoo中,domain对记录上的条件进行编码:domain是用于选择模型记录子集的条件列表。每个条件都是一个包含字段名运算符的三元组。如果指定字段满足作用于值的运算符的条件,则记录满足条件。
例如,当在Product模型上使用时,以下domain选择单价高于1000的所有services
  1. [('product_type', '=', 'service'), ('unit_price', '>', 1000)]
复制代码
默认情况下,条件与隐式AND组合在一起,这意味着记录匹配一个domain,需要满足domain中的每个条件。逻辑运算符&(AND)、|(OR)和!(NOT)可用于显式组合条件。它们用于前缀位置(运算符插入在其参数之前,而不是插入在参数之间)。例如,选择类型为“服务“或“单价”不介于1000和2000之间的产品
  1. ['|',    ('product_type', '=', 'service'),    '!', '&',<tree string="Tests">
  2.     <field name="name"/>
  3.     <field name="last_seen"/>
  4. </tree>('unit_price', '>=', 1000),<tree string="Tests">
  5.     <field name="name"/>
  6.     <field name="last_seen"/>
  7. </tree>('unit_price', '=', 1000),('unit_price', '=', 1000),('unit_price', '=', 1000),('unit_price', '', 3)]"><tree string="Tests">
  8.     <field name="name"/>
  9.     <field name="last_seen"/>
  10. </tree><tree string="Tests">
  11.     <field name="name"/>
  12.     <field name="last_seen"/>
  13. </tree><tree string="Tests">
  14.     <field name="name"/>
  15.     <field name="last_seen"/>
  16. </tree><tree string="Tests">
  17.     <field name="name"/>
  18.     <field name="last_seen"/>
  19. </tree><tree string="Tests">
  20.     <field name="name"/>
  21.     <field name="last_seen"/>
  22. </tree><tree string="Tests">
  23.     <field name="name"/>
  24.     <field name="last_seen"/>
  25. </tree><tree string="Tests">
  26.     <field name="name"/>
  27.     <field name="last_seen"/>
  28. </tree><tree string="Tests">
  29.     <field name="name"/>
  30.     <field name="last_seen"/>
  31. </tree><tree string="Tests">
  32.     <field name="name"/>
  33.     <field name="last_seen"/>
  34. </tree><tree string="Tests">
  35.     <field name="name"/>
  36.     <field name="last_seen"/>
  37. </tree><tree string="Tests">
  38.     <field name="name"/>
  39.     <field name="last_seen"/>
  40. </tree><tree string="Tests">
  41.     <field name="name"/>
  42.     <field name="last_seen"/>
  43. </tree><tree string="Tests">
  44.     <field name="name"/>
  45.     <field name="last_seen"/>
  46. </tree>   
复制代码
重启服务,验证效果


来源:https://www.cnblogs.com/shouke/p/17253327.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具