Odoo - 遍历字段,获取值并将它们放入新字段
Posted
技术标签:
【中文标题】Odoo - 遍历字段,获取值并将它们放入新字段【英文标题】:Odoo - Iterate through field, take the values and put them in a new field 【发布时间】:2022-01-08 04:55:41 【问题描述】:嘿,我是 Odoo 自定义和 Python 的新手,我想知道如何遍历字段并将值从字段中取出并将它们放入新字段中。
我要遍历的字段包含多个电子邮件地址。我想遍历这些电子邮件地址字段,收集电子邮件地址并将它们一起存储在一个新字段中。
为此,我需要一个函数。
我要遍历的字段: 我的 One2many 字段包含多个我想要遍历和收集的邮件地址。
field_contacts_customer_info = fields.One2many(
'contacts.customer.information', 'another_id', string='Contacts for customer information')
我想存储收集到的邮箱地址的字段:
selected_email = fields.Char(string="Mail4Info")
这是我的课: 我想从 mail_contacts 字段中收集所有的电子邮件地址。
_name = 'contacts.customer.information'
_rec_name = 'name_contacts'
name_contacts = fields.Many2one(
'res.partner', string="Person", domain = [('is_company', '=', False)])
mail_contacts = fields.Char(
related = 'name_contacts.email' ,string="Email")
another_id = fields.Many2one('res.partner', string="AnotherID")
我的尝试:我尝试开始编写一个函数,但我不知道我是否朝着正确的方向前进。我认为我编写了一个函数 get_email,它取决于包含电子邮件地址的字段,并将收集到的电子邮件地址放入一个列表中,我可以将其提供给我的 selected_email 字段。但我不知道如何遍历 mail_contacts 字段并从中获取值(电子邮件)。
@api.depends('field_contacts_customer_info.mail_contacts')
def get_email(self):
list_of_mails = []
谢谢。
【问题讨论】:
【参考方案1】:您需要遍历 self
这是一个记录集并循环遍历 field_contacts_customer_info
字段以获取 mail_contacts
字段值。
@api.depends('field_contacts_customer_info.mail_contacts')
def get_email(self):
for record in self:
record.selected_email = ','.join(info.mail_contacts for info in record.field_contacts_customer_info)
然后将compute
属性设置为get_email
:
selected_email = fields.Char(string="Mail4Info", compute='get_email')
您可以查看 ORM 文档以了解如何使用 computed fields。
【讨论】:
谢谢!如果我理解正确,也许你可以证明:'@api.depends' 密切关注 'field_contacts_customer_info.mail_contacts' - 字段,并在 ist 更改时触发。当 '@api.depends' 被触发时,函数 get_email 被调用,它有参数 self,它代表我类中的一个对象。对于每条记录,因此在这种情况下,对于每个电子邮件地址,我们通过说 record.selected_email 将记录添加到 selected_email - 字段中,然后我有点迷失了逗号分隔记录。也许你可以解释一下后面的部分,以便我理解。 是的,self
可以表示多条记录。我使用逗号只是为了分隔电子邮件地址。 get_email
方法必须将计算值分配给字段。
谢谢!我还有一个问题。您使用了“信息”。那是从哪里来的,它有什么作用或代表什么?
它代表一个contacts.customer.information
记录。我使用了generator comprehension 并使用info
变量名迭代field_contacts_customer_info
这个答案对你有帮助吗?以上是关于Odoo - 遍历字段,获取值并将它们放入新字段的主要内容,如果未能解决你的问题,请参考以下文章
从文本字段中获取值并将它们存储在Objective-C中的字典中
如何使用 jQuery 获取复选框的值并将它们吐到不同的表单字段中
如何在 Python 中解析 JSON 并将 2 个字段放入字典中? [复制]