2016-11-08 1 views
5

Я пытаюсь импортировать новые данные клиента в Odoo, используя импорт CSV. Существует одно поле customer_id_no, которое автоматически создается при создании записи (с использованием «ir.sequence»).Как переопределить поле «ir.sequence» в импорте csv в Odoo?

Теперь каждая запись клиента в CSV имеет уникальный customer_id_no, но когда я пытаюсь импортировать его, существующий customer_id_no переопределяется стандартной последовательностью.

Как я могу вставить данные из CSV, как в Odoo?

Также мне не удалось найти ответ на импорт полей many2one. Любая помощь в этом была бы хорошей.

+0

Я никогда не сталкивался с полем 'customer_id_no'. Может быть, это поле является настраиваемым полем? Импорт использует create() модели, и когда это использование последовательности не выполняется хорошо, вы ничего не можете поделать, но измените эту реализацию. Примером хорошей реализации использования последовательности, но позволяющей импортировать данные, является модель 'sale.order'. – CZoellner

+0

Поле 'customer_id_no' является настраиваемым полем в настраиваемом модуле, а код последовательности также записывается в пользовательский модуль. –

+0

@CZoellner Я даже попытался отключить последовательность из настроек -> Технические -> последовательности и идентификаторы, а затем импортировал данные, но, к сожалению, это не сработало. –

ответ

0

@CZoellner является правильным. Вы должны изменить свой метод. Это было бы примерно так:

@api.model 
def create(self, vals): 
    vals['customer_id_no'] = mechanics_to_generate_sequence() 
    return super(ClassName, self).create(vals) 

Нужно обратиться к случаю, где указан customer_id_no. Как это

@api.model 
def create(self, vals): 
    if not vals.get('customer_id_no'): 
     vals['customer_id_no'] = mechanics_to_generate_sequence() 
    return super(ClassName, self).create(vals) 

Обратите внимание, что после этого вам нужно будет сделать последовательность следующей итерации к значению рядом с самым высоким в customer_id_no.