2017-01-18 2 views
0

У меня есть пользовательский модуль, который наследуется fleet.vehicle.log.services моделиПрограммных добавить данные по умолчанию для пользовательского модуля - Odoo v9 сообщества

Это пользовательский модуль.

Что я пытаюсь сделать, это добавить данные по умолчанию только к двум его полям, позвольте мне объяснить сам.

Модель имеет следующие обязательные поля:

vehicle_id 
cost_id 
cost_type 

И я унаследовал/добавил таких:

x_location_src_id 
x_location_dest_id 

Они являются stock места, что я хочу, чтобы добавить по умолчанию запаса места для эта модель, но только местоположения, а не обязательные поля.

До сих пор я пытался, как это, в моем data/location_data.xml файле:

<record id="location_default" model="fleet.vehicle.log.services"> 
    <field name="vehicle_id">1</field> 
    <field name="cost_id">2</field> 
    <field name="cost_type">fuel</field> 
    <field name="x_location_src_id">ReparacionUnidades</field> 
    <field name="x_location_dest_id">ReparacionUnidades</field> 
</record> 

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

Так как это единственный способ добавить данные по умолчанию с помощью QWeb/XMl, я думаю, что есть способ преодолеть это, некоторым attributes или, возможно, программным путем с помощью python.

У вас есть ключ к тому, как это сделать другим способом?

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

Любые идеи?

Возможно, у вас есть какая-либо логика или атрибуты в stock.locations и не непосредственно в этом fleet.vehicle.log.services модели?

+1

Я не очень понимаю ваш вопрос. Вы запрашиваете способ, чтобы при создании новой записи 'fleet.vehicle.log.services' эти два новых поля будут иметь значение по умолчанию для них?Или у вас уже есть тонны записей 'fleet.vehicle.log.services' и хотите, чтобы эти значения имели значения по умолчанию? – Majikat

+0

Привет, чтобы создать новую запись модели, и эти два новых поля будут иметь значение по умолчанию для них :) – NeoVe

ответ

2

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

class Partner(models.Model): 
    _inherit = 'res.partner' 

назначая СТАТИЧЕСКИЙ DEFAULT VALUE

email = fields.Char(default='[email protected]') 

назначая ПРОГРАММНЫЙ DEFAULT VALUE

def _email_default(self): 
     return '[email protected]' 

    email = fields.Char(default=_email_default) 

Используя старый апи вы можете сделать что-то подобное, используя другой синтаксис.

class Partner(osv.osv): 
    _inherit = 'res.partner' 

    _columns = { 
     'email': fields.char('Email') 
    } 

ПРОГРАММНЫЕ СРЕДСТВА ПРИСВОЕНИЕ Значение по умолчанию

def _email_default(self, cr, uid, ctx={}): 
     return '[email protected]' 

    _defaults = { 
     'email': _email_default, 
    } 

СТАТИЧЕСКУЮ МЕТОД назначая DEFAULT VALUE

_defaults = { 
     'email': '[email protected]', 
    } 
+0

Привет, Большое спасибо, удивительное объяснение, у меня все еще нет результатов, но я открою новый вопрос для этого! – NeoVe

+0

Действительно потрясающий ответ! – CZoellner

Смежные вопросы