One2many字段问题Odoo 10.0

时间:2017-04-10 11:24:10

标签: postgresql orm odoo-9 odoo-10 one2many

我对One2many字段有这个非常奇怪的问题。 首先让我向你解释一下这个场景......

我在sale.order.line中有一个One2many字段,下面的代码将更好地解释结构

class testModule(models.Model):
    _name = 'test.module'

    name = fields.Char()


class testModule2(models.Model):
    _name = 'test.module2'

    location_id = fields.Many2one('test.module')
    field1 = fields.Char()
    field2 = fields.Many2one('sale.order.line')


class testModule3(models.Model):
    _inherit = 'sale.order.line'

    test_location = fields.One2many('test.module2', 'field2')

案例1: 现在发生的事情是,当我创建新的销售订单时,我选择partner_id,然后添加sale.order.line并在此行中添加One2many字段{{1然后我保存。

案例2: 创建新的销售订单,选择test_location然后添加partner_id并在sale.order.line内添加sale.order.line行[关闭销售订单行窗口]。现在,在点击保存之前输入 后,我更改了一个字段test_location,然后点击保存。

案例3: 这种情况与案例2 相同,但另外我再次更改partner_id字段[更改总共2次首先发生case2然后现在],然后我点击保存。< / p>

结果

CASE 1 工作正常。

CASE 2

的问题
partner_id

现在对于这种情况,我在odoo.sql_db: bad query: INSERT INTO "test_module2" ("id", "field2", "field1", "location_id", "create_uid", "write_uid", "create_date", "write_date") VALUES(nextval('test_module2_id_seq'), 27, 'asd', ARRAY[1, '1'], 1, 1, (now() at time zone 'UTC'), (now() at time zone 'UTC')) RETURNING id ProgrammingError: column "location_id" is of type integer but expression is of type integer[] LINE 1: ...VALUES(nextval('test_module2_id_seq'), 27, 'asd', ARRAY[1, '... 的创建/写入方法上放置了一个调试器,以查看值是否正在传递..

sale.order.line

在上面的值中values = {u'product_uom': 1, u'sequence': 0, u'price_unit': 885, u'product_uom_qty': 1, u'qty_invoiced': 0, u'procurement_ids': [[5]], u'qty_delivered': 0, u'qty_to_invoice': 0, u'qty_delivered_updateable': False, u'customer_lead': 0, u'analytic_tag_ids': [[5]], u'state': u'draft', u'tax_id': [[5]], u'test_location': [[5], [0, 0, {u'field1': u'asd', u'location_id': [1, u'1']}]], 'order_id': 20, u'price_subtotal': 885, u'discount': 0, u'layout_category_id': False, u'product_id': 29, u'price_total': 885, u'invoice_status': u'no', u'name': u'[CARD] Graphics Card', u'invoice_lines': [[5]]} 正在像location_id那样传递,这是不正确的......所以为此我更正了代码中的问题并更新了值并传递了......

CASE 3 如果用户将字段更改为2次或超过2次,则值为

u'location_id': [1, u'1']}]]

这里

values = {u'invoice_lines': [[5]], u'procurement_ids': [[5]], u'tax_id': [[5]], u'test_location': [[5], [1, 7, {u'field1': u'asd', u'location_id': False}]], u'analytic_tag_ids': [[5]]}

多个案例

如果用户案例1 同一记录中的案例2 案例3 ,则有时该行将保存为{ {1}}在数据库中,u'location_id': False field2 = Null or False等其他值将包含数据但不包含location_id

注意:这个发生任何字段不仅仅是PARTNER_ID字段在销售订单的标题

我尝试过调试自己,但无法找到原因。

0 个答案:

没有答案