class RokeDispatchCarOrderLine(models.Model): _name = "roke.dispatch.car.order.line" _description = "派车单明细" _inherit = ['mail.thread'] _order = "id desc" _rec_name = "code" order_id = fields.Many2one('roke.dispatch.car.order', string='派车单') code = fields.Char(string='单据编号', track_visibility='onchange') class Rokedispatchordermanagement(models.Model): _name = 'roke.dispatch.order.management' _inherit = ['mail.thread', 'mail.activity.mixin'] _description = "派船单" _rec_name = "code" code = fields.Char(string='单据编号', track_visibility='onchange') class RokeReceiptdetails(models.Model): _name = "roke.receipt.details" _description = "记录" _inherit = ['mail.thread'] code = fields.Char(string='单据编号') name = fields.Char(string='名称') 怎么在记录的tree每条记录都加上查询 点击查询按钮根据编号从派车派船两个模型里面找展示有form展示查到的数据
时间: 2024-03-12 14:43:37 浏览: 82
Python库 | roke-0.1.0-py3-none-any.whl
您可以使用Odoo的动作(action)和视图(view)来实现这个功能。首先,您需要创建一个动作(action),这个动作将会跳转到一个包含tree视图的页面。在这个tree视图中,您可以添加一个按钮(button),用于触发查询操作,查询派车单和派船单,并将查到的数据展示在tree视图中。
以下是一个实现这个功能的示例代码:
```python
from odoo import models, fields, api
class RokeReceiptDetails(models.Model):
_name = "roke.receipt.details"
_description = "记录"
_inherit = ['mail.thread']
code = fields.Char(string='单据编号')
name = fields.Char(string='名称')
@api.multi
def open_related_dispatch_orders(self):
action = self.env.ref('your_module_name.action_related_dispatch_orders').read()[0]
action['domain'] = [('code', '=', self.code)]
return action
```
在这个模型中,我们添加了一个方法`open_related_dispatch_orders`,这个方法将会在点击tree视图中的查询按钮时被触发。该方法会返回一个动作(action),这个动作跳转到一个新的tree视图,用于展示查询结果。
```xml
<odoo>
<data>
<!-- action to open related dispatch orders -->
<record id="action_related_dispatch_orders" model="ir.actions.act_window">
<field name="name">Related Dispatch Orders</field>
<field name="res_model">roke.dispatch.car.order.line</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('code', '=', current_code)]</field>
<field name="context">{'current_code': active_id}</field>
</record>
<!-- view for RokeReceiptDetails -->
<record id="view_roke_receipt_details_tree" model="ir.ui.view">
<field name="name">roke.receipt.details.tree</field>
<field name="model">roke.receipt.details</field>
<field name="arch" type="xml">
<tree string="Roke Receipt Details" create="false" edit="false">
<field name="code"/>
<field name="name"/>
<button name="open_related_dispatch_orders" string="查询"/>
</tree>
</field>
</record>
<!-- menuitem for RokeReceiptDetails -->
<record id="menu_roke_receipt_details" model="ir.ui.menu">
<field name="name">Roke Receipt Details</field>
<field name="model">roke.receipt.details</field>
<field name="action" ref="your_module_name.action_roke_receipt_details_tree"/>
</record>
</data>
</odoo>
```
此外,您还需要在Odoo中添加一个动作(action)和一个视图(view),用于展示查询结果。在上面的代码中,我们定义了一个名为`view_roke_receipt_details_tree`的tree视图,用于展示`RokeReceiptDetails`模型中的数据。我们还添加了一个查询按钮(button),用于触发`open_related_dispatch_orders`方法。最后,我们还添加了一个菜单(menu),用于访问`RokeReceiptDetails`模型。
请注意,为了在tree视图中触发查询操作,我们使用了一个上下文(context)变量,这个变量将当前记录的ID(active_id)传递给了查询方法。我们还将动作(action)的domain属性设置为了`[('code', '=', current_code)]`,这个属性将会过滤派车单和派船单,只展示与当前记录的单据编号相匹配的记录。
希望这个示例代码能够帮助您实现您的需求。
阅读全文