odoo16-开发笔记-列表视图-显示-行号

功能:列表视图-显示-行号

第一版:每页行号从1开始
  • model.py
class SaleOrderExtension(models.Model):
    _inherit = 'sale.order'
    # 功能:列表视图-显示-行号
    # 定义计算属性,根据行数计算对应的行号
    _sequence = fields.Integer(string='Sequence', compute='_compute_row_number', store=False)

    # 计算方法
    def _compute_row_number(self):
        row_number = 1
        for record in self:
            record._sequence = row_number
            row_number += 1
  • view.xml
<record model="ir.ui.view" id="view_quotation_tree_display_line_numbers">
  <field name="name">view.quotation.tree.display.line.numbers</field>
  <field name="model">sale.order</field>
  <field name="inherit_id" ref="sale.view_quotation_tree"/>
  <field name="arch" type="xml">
    <xpath expr="//field[@name='name']" position="before">
      <field name="_sequence" widget="number" readonly="True"/>
    </xpath>
  </field>
</record>
第二版:翻页后行号根据offset继续增加
  • model.py
class SaleOrderExtension(models.Model):
    _inherit = 'sale.order'
    # 功能:列表视图-显示-行号
    # 定义属性,用于存储行号
    _sequence = fields.Integer(string='Sequence', store=False)
   
# from addons.web.models.models import Base 必须注释
class BaseExtension(models.AbstractModel):
    _inherit = 'base'
    
	# 重写返回数据的方法
    @api.model
    def web_search_read(self, domain=None, fields=None, offset=0, limit=None, order=None, count_limit=None):
        # 首先调用父类方法 得出正常的返回值
        response = super().web_search_read(domain, fields, offset=offset, limit=limit, order=order)
        # 创建查询对象-对sale.order进行查询
        xx = self.env['sale.order']
        if response.get('records'):
            n = 0
            # 遍历返回值中records下的数据-即行数据
            for i in response['records']:
                n += 1
                # 根据id对数据进行查询,替换_sequence的值
                xx.search([('id', '=', i['id'])]).write({'_sequence': offset + n})
        # 重新调用父类方法 得出新数据并返回
        response2 = super().web_search_read(domain, fields, offset=offset, limit=limit, order=order)
        return response2
  • view.xml
<!-- 功能:列表视图-显示-行号 -->
<!-- 继承于:sale/views/sale_order_views.xml/view_quotation_tree -->
<record model="ir.ui.view" id="view_quotation_tree_display_line_numbers">
  <field name="name">view.quotation.tree.display.line.numbers</field>
  <field name="model">sale.order</field>
  <field name="inherit_id" ref="sale.view_quotation_tree"/>
  <field name="arch" type="xml">
    <xpath expr="//field[@name='state']" position="before">
      <field name="_sequence" widget="number" readonly="True"/>
    </xpath>
  </field>
</record>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值