如何在odoo中的模型中搜索具有重复字段值的记录

2024-04-18 00:23:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在一个具有重复字段值的模型中获取记录,我试图使用搜索方法来实现这一点,但我真的不知道如何去做

class PartnerBankInherit(models.Model):
    _inherit = 'res.partner.bank'

    my_field = fields.Char()


test = self.env['res.partner.bank'].\
            search([])

我想检查/搜索是否有与my_字段值相同的记录


Tags: 方法模型fieldfieldspartnermodelmodelsmy
1条回答
网友
1楼 · 发布于 2024-04-18 00:23:24

您可以使用read_group方法

您可以在帐户伙伴模型中的_compute_bank_count方法中找到一个示例,该方法通过partner_id对银行进行分组:

def _compute_bank_count(self):
    bank_data = self.env['res.partner.bank'].read_group([('partner_id', 'in', self.ids)], ['partner_id'], ['partner_id'])
    mapped_data = dict([(bank['partner_id'][0], bank['partner_id_count']) for bank in bank_data])
    for partner in self:
        partner.bank_account_count = mapped_data.get(partner.id, 0)

如果需要使用search方法,则需要重新组合具有相同字段值的记录

例如,使用位置字段重新组合合作伙伴银行:

from itertools import groupby


keyfunc = lambda r: r.location
partner_banks = sorted(partner_banks, key=keyfunc)
for k, g in groupby(partner_banks, keyfunc):
    # k is the location
    # list(g) is a list of records with the same location

itertools.groupby文档中:

It generates a break or new group every time the value of the key function changes (which is why it is usually necessary to have sorted the data using the same key function)

相关问题 更多 >

    热门问题