odoo开发笔记 -- 前台不同视图访问同一个模型

看一下partner这个表, 客户和供应商,都用这个表,那怎么区分呢:

供应商:

 

客户

 

 

注意这两个里面用domain来进行区分:
 
<field name="domain">[('s_category_id','!=',False)]</field>
<field name="domain">[('c_category_id','!=',False)]</field>
 
表相同,出来的结果不同。当然,这两个domain的字段不同,这样就能达到一个partner既是客户又是供应商的目的,当然,也方便其它操作,比如追踪买了多少单,卖了多少产品等等操作
 
然后,从不同的菜单或button里指定不同的action来调用不同的act_window吧:
 
<menuitemid='buy_vendor_menu'action='core.vendor_action'name="供应商"parent='menu_buy_master'sequence='10'/>
 
这样进入了vendor_action 对应的tree里,再点明细,进到form里
 
<menuitemid='sell_customer_menu'action='core.customer_action'name="客户"parent='menu_sell_master'sequence='10'/>
 
这样进入了customer_action对应的tree,form里
 
......
 
 

注:

(1)从many2one过来时可能会乱

(2)odoo视图窗口action id加载有优先级的顺序,如果菜单1中的form1和tree1引用了模型test,做了视图绑定,那么菜单2中的form2和tree2也要做相应的视图绑定,否则,启动服务后,前台界面加载的可能不是你需要显示的视图。

(3)这种写法虽然可以实现不同的窗口显示不同的菜单公用一个模型,但是,有一个地方需要注意,如果两个窗口菜单都使用了odoo的消息机制,那么当对其中的某个菜单进行操作的时候,给某位关注者发送了消息提醒,当该关注着用户登陆系统后,首先会受到消息提醒,在消息内容中,有时会携带相应的单号,当你点击单号跳转的时候可能会出现,系统不知道跳转到那个界面视图的情况。(这块需要小伙伴们仔细想一下。。。)

 

总结:

 

 

来自:http://note.youdao.com/share/?id=ed6f7d028c5bd5390796242ff527dd72&type=note#/

posted @ 2018-02-02 15:40  hello-Jesson  阅读(1298)  评论(0编辑  收藏  举报