Many2one 字段中的一条记录在 Odoo 的 Many2one 字段中有另一条记录
One record in Many2one field having another multiple records in Many2one field in Odoo
使用 python 请求,我请求了一个 API 表单 Zoho:
tags = requests.get('https://books.zoho.com/api/v3/setting/tags?organization_id=xx&authtoken=xxx').json()
哪个return这个数据:
"reporting_tag": {
"tag_id": "1717893000000000335",
"tag_name": "division",
"associated_with": "item",
"is_active": true,
"status": "active",
"tag_options": [
{
"tag_option_id": "1717893000000123005",
"tag_option_name": "A",
"is_active": true,
"status": "active"
},
{
"tag_option_id": "1717893000000123003",
"tag_option_name": "B",
"is_active": true,
"status": "active"
},
{
"tag_option_id": "1717893000000123007",
"tag_option_name": "C",
"is_active": true,
"status": "active"
}
]
根据以上结果,我需要存储 (tag_name) 及其 (tag_option_name)。 API 可能会产生数百个 tag_name 及其 tag_name_options。
到目前为止,我已经定义了 Many2one 字段来仅存储 tag_name:
x_tag_name = fields.Many2one('zoho.tags', string="Tag Name")
所以我想做的是当我 select 一个 tag_name 时,它的所有 tag_option_name 应该出现在另一个 Many2one 字段中。类似于一个 parent 有多个 children。我不知道是否可能,我希望你能帮助我做类似的场景。
class ZohoTags(models.Model):
_name = 'zoho.tags'
name = fields.Char(string="Tags")
tag_options = fields.Char(string='Options')
tag_id = fields.Char(string="Tag Id")
@api.multi
def tags_get(self):
token = ''
org_id = ''
setting_values = self.env['ir.config_parameter'].search([])
for keys in setting_values:
if keys.key == 'account.zoho_authtoken_module':
token = keys.value
print(keys.value)
if keys.key == 'account.zoho_organization_module':
org_id = keys.value
print(keys.value)
tags = requests.get('https://books.zoho.com/api/v3/settings/tags?organization_id=xxx&authtoken=xxx').json()
for data in tags['reporting_tags']:
tag_name = '%s' % (data['tag_name'])
tag_ids = '%s' % (data['tag_id'])
self.env.cr.execute("INSERT INTO zoho_tags (name, tag_id) VALUES ('%s', '%s')" % (tag_name, tag_ids))
self.env.cr.commit()
print(tag_name)
class 标签行(models.Model):
_name = 'zoho.tags.line'
x_tag_name = fields.Many2one('zoho.tags', string='Analytic Account')
x_tags_options = fields.Char(string='Tags Option', related="x_zoho_tags.tag_options")
rules_id = fields.Many2one('hr.salary.rule')
是的,你的目标当然可以实现。
so what I want to do is when I select a tag_name all its tag_option_name should appear in another Many2one
您的 tag_option_name
,假设此数据的模型是 zoho.tags.line
,将具有 Many2one
关系 tag_id
与 zoho.tags
,而不是另一个一路走来。 zoho.tags
将与 zoho.tags.line
具有相反的 One2many
关系 tag_option_ids
,inverse_key
设置为 tag_id
。因此,对于每条 zoho.tags
条记录,您将从字段 tag_option_ids
中获得多条 zoho.tags.line
条记录,这些记录可以在表单视图中的 tree/list
中显示。
_name = 'zoho.tags'
name = fields.Char(string="Tags")
tag_option_ids = fields.One2many(zoho.tags.line, tag_id, string='Options')
tag_id = fields.Char(string="Tag Id")
_name = 'zoho.tags.line'
tag_id = fields.Many2one('zoho.tags', string='Analytic Account')
x_tags_options = fields.Char(string='Tags Option', related="x_zoho_tags.tag_options")
rules_id = fields.Many2one('hr.salary.rule')
使用 python 请求,我请求了一个 API 表单 Zoho:
tags = requests.get('https://books.zoho.com/api/v3/setting/tags?organization_id=xx&authtoken=xxx').json()
哪个return这个数据:
"reporting_tag": {
"tag_id": "1717893000000000335",
"tag_name": "division",
"associated_with": "item",
"is_active": true,
"status": "active",
"tag_options": [
{
"tag_option_id": "1717893000000123005",
"tag_option_name": "A",
"is_active": true,
"status": "active"
},
{
"tag_option_id": "1717893000000123003",
"tag_option_name": "B",
"is_active": true,
"status": "active"
},
{
"tag_option_id": "1717893000000123007",
"tag_option_name": "C",
"is_active": true,
"status": "active"
}
]
根据以上结果,我需要存储 (tag_name) 及其 (tag_option_name)。 API 可能会产生数百个 tag_name 及其 tag_name_options。
到目前为止,我已经定义了 Many2one 字段来仅存储 tag_name:
x_tag_name = fields.Many2one('zoho.tags', string="Tag Name")
所以我想做的是当我 select 一个 tag_name 时,它的所有 tag_option_name 应该出现在另一个 Many2one 字段中。类似于一个 parent 有多个 children。我不知道是否可能,我希望你能帮助我做类似的场景。
class ZohoTags(models.Model):
_name = 'zoho.tags'
name = fields.Char(string="Tags")
tag_options = fields.Char(string='Options')
tag_id = fields.Char(string="Tag Id")
@api.multi
def tags_get(self):
token = ''
org_id = ''
setting_values = self.env['ir.config_parameter'].search([])
for keys in setting_values:
if keys.key == 'account.zoho_authtoken_module':
token = keys.value
print(keys.value)
if keys.key == 'account.zoho_organization_module':
org_id = keys.value
print(keys.value)
tags = requests.get('https://books.zoho.com/api/v3/settings/tags?organization_id=xxx&authtoken=xxx').json()
for data in tags['reporting_tags']:
tag_name = '%s' % (data['tag_name'])
tag_ids = '%s' % (data['tag_id'])
self.env.cr.execute("INSERT INTO zoho_tags (name, tag_id) VALUES ('%s', '%s')" % (tag_name, tag_ids))
self.env.cr.commit()
print(tag_name)
class 标签行(models.Model):
_name = 'zoho.tags.line'
x_tag_name = fields.Many2one('zoho.tags', string='Analytic Account')
x_tags_options = fields.Char(string='Tags Option', related="x_zoho_tags.tag_options")
rules_id = fields.Many2one('hr.salary.rule')
是的,你的目标当然可以实现。
so what I want to do is when I select a tag_name all its tag_option_name should appear in another Many2one
您的 tag_option_name
,假设此数据的模型是 zoho.tags.line
,将具有 Many2one
关系 tag_id
与 zoho.tags
,而不是另一个一路走来。 zoho.tags
将与 zoho.tags.line
具有相反的 One2many
关系 tag_option_ids
,inverse_key
设置为 tag_id
。因此,对于每条 zoho.tags
条记录,您将从字段 tag_option_ids
中获得多条 zoho.tags.line
条记录,这些记录可以在表单视图中的 tree/list
中显示。
_name = 'zoho.tags'
name = fields.Char(string="Tags")
tag_option_ids = fields.One2many(zoho.tags.line, tag_id, string='Options')
tag_id = fields.Char(string="Tag Id")
_name = 'zoho.tags.line'
tag_id = fields.Many2one('zoho.tags', string='Analytic Account')
x_tags_options = fields.Char(string='Tags Option', related="x_zoho_tags.tag_options")
rules_id = fields.Many2one('hr.salary.rule')