One2many поле выпуска Odoo 10.0

У меня очень странная проблема с полем One2many. Сначала позвольте мне объяснить вам сценарий...

У меня есть поле One2many в sale.order.lineкод ниже объяснит структуру лучше

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 test_location а потом я сохраняю

СЛУЧАЙ 2: Создать новый заказ клиента, выбрать partner_id затем добавьте sale.order.line и внутри sale.order.line добавить test_location линия [закрыть окно строки заказа на продажу]. Теперь после ввода, прежде чем нажать "Сохранить", я изменяю поле, скажем partner_id и затем нажмите сохранить.

Случай3: этот случай такой же, как случай 2, но с добавлением, что я снова изменяю partner_id поле [изменения сделаны всего 2 раза сначала в case 2, а затем сейчас], затем я нажимаю на сохранить.

РЕЗУЛЬТАТЫ

Случай 1 работает нормально.

Случай 2 имеет проблему

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 проходит как u'location_id': [1, u'1']}]] что не правильно... так что для этого я исправляю проблему в коде и обновляю значения и передаю это...

СЛУЧАЙ 3, если пользователь изменяет поле, скажем, 2 или более чем 2 раза, тогда значения

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]]}

Вот

u'location_id': False

МНОГОКРАТНЫЙ СЛУЧАЙ

если пользователь делает случай 1, то на той же записи делает случай 2 или случай 3, тогда иногда строка будет сохранена как field2 = Null or False в базе данных другие значения, такие как location_id а также field1 будет иметь данные, но не field2

ПРИМЕЧАНИЕ: ЭТО ПРОИСХОДИТ С ЛЮБЫМ ПОЛЕМ, НЕ ТОЛЬКО ПОЛЕ PARTNER_ID НА УРОВНЕ ЖАТКИ ЗАКАЗА НА ПРОДАЖУ

Я попытался отладить себя, но не смог найти причину, по которой это происходит.

0 ответов

Другие вопросы по тегам