开发者社区 问答 正文

组id在不同的日期

如何在不同的月份对表的ID进行分组,因为目前我只在我输入的pirmer月份进行分组,而不在其他月份进行分组。例如:在10月和12月使用名为“Bank”的id,但odoo只在10月将其分组给我,因为它是在那里首次使用的,而在我两个月里都没有出现。 链接图像查看odoo: https://ibb.co/NsZx9yx 代码使用:

    <record id="proyecto_rc.account_view_search" model="ir.ui.view">
    <field name="name">proyecto_rc.account.search </field>
    <field name="model">proyecto_rc.account</field>
    <field name="arch" type="xml">
    <search string="String...">
        <field name="date"/>
        <group expand="1" string="Group By">
                <filter string="Month" name="month" help="help"  context="{'group_by':'date:month'}"/>
        </group>
    </search>
    </field>
    </record>

问题来源StackOverflow 地址:/questions/59378606/group-id-on-different-dates

展开
收起
kun坤 2019-12-30 10:19:01 301 分享 版权
阿里云 AI 助理回答

在Odoo中,如果你需要根据不同的月份对记录进行分组,并且希望获取每个月份中出现过的特定ID(如“Bank”),你可能需要结合使用搜索和读取记录的方法,并利用聚合函数(如groupby)来实现跨月分组统计。下面是一个示例代码片段,展示了如何按月份和ID分组查询数据:

from odoo import models, fields, api

class YourModel(models.Model):
    _inherit = 'account.account'  # 假设你是在account.account模型上操作

    @api.model
    def get_records_by_month_and_id(self, account_id=None):
        # 如果有特定ID,添加到搜索条件中
        domain = [('id', '=', account_id)] if account_id else []

        # 获取指定时间段的数据,这里以一年为例,你可以根据需要调整
        start_date = fields.Date.to_date('2023-01-01')
        end_date = fields.Date.to_date('2023-12-31')

        # 使用search_read方法直接获取分组后的结果
        records = self.search_read(
            domain + [('date', '>=', start_date), ('date', '<=', end_date)],
            fields=['id', 'name', 'date'],
            groupby=['date:month', 'id'],
            orderby='date:month'
        )

        return records

# 调用方法
your_model = self.env['account.account']
results = your_model.get_records_by_month_and_id(account_id=你的特定ID)  # 如果需要针对特定ID查询,传入ID;否则,不传或传None获取所有

这段代码首先定义了一个方法get_records_by_month_and_id,它允许你根据可选的账户ID以及一个时间范围(在这个例子中是一整年)来搜索记录。通过使用search_read方法并设置groupby参数为['date:month', 'id'],我们可以按月份和ID对记录进行分组。这里的'date:month'是Odoo的一个特殊语法,用于按月份分组日期字段。

请注意,你需要根据你的实际模型字段名和逻辑调整上述代码中的表名、字段名及日期范围等。此外,确保你的模型中确实有日期字段可以用来进行月份分组。如果原始问题中的proyecto_rc.account指的是自定义模块或模型,请相应地替换模型名称。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答地址: