在许多2ONE字段中,一个记录在Odoo的许多2ONE字段中具有另一个多个记录



使用python请求,我请求API表单Zoho:

tags = requests.get('https://books.zoho.com/api/v3/setting/tags?organization_id = xx& authtoken = xxx').json()

返回此数据的哪个:

 "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_names及其tag_name_options。

到目前为止,我已经定义了许多2ONE字段来存储tag_name:

x_tag_name = fields.many2one('zoho.tags',string =" tag name")

所以我想做的是选择一个tag_name时,所有tag_option_name都应出现在另一个多2one字段中。类似于一个父母有多个孩子。我不知道是否可能,希望您能帮助我做类似的情况。

类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)

类TagSline(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')

是的,您的目标肯定是可以实现的。

所以我想做的是当我选择一个tag_name时,所有的tag_option_name应该出现在另一个多2one

您的tag_option_name,假设该数据的模型为zoho.tags.line,将具有Many2one关系tag_id,其CC_4,而不是相反。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')

最新更新