Сообщение #1
21 апреля 2017, 11:14
|
Простой пример создание модуля со связями Many2one, One2many и тестовыми данными
К примеру, необходимо создать модуль стран на нескольких языках системы Odoo. В настройках системы включаем русский и английский языки
Русский имеет id записи = 52, английский = 1
1. Создаем модель страны
Class country(models.Model):
_name = 'test.country'
name = fields.Char(string=«Наименование страны»)
description = fields.Text(string=«Описание страны»)
/// ссылка на язык страны
responsible_id = fields.Many2one('res.lang',ondelete='set null', string=«Язык страны»)
/// ссылка на группу страны
group_id = fields.Many2one('ticketbus.group_lang_country',ondelete='set null', string=«Группа»)
2.Создаем группу страны
class group_lang_country(models.Model):
_name = 'test.group_lang_country'
/// вычиcляемое поле наименование страны
/// related указывает, что необходимо из отношения country_id взять наименование страны
name = fields.Char(related='country_id.name',store=False, string=«Наименование страны»)
/// вычиcляемое поле языка страны
/// related указывает, что необходимо из отношения country_id взять отношение responsible_id из модели test.country и получить наименование языка из модели res.lang
lang=fields.Char(related='country_id.responsible_id.name',store=False, string=«Язык страны»)
/// группа ссылается на несколько стран
country_id = fields.One2many('ticketbus.country','group_id',string=«Ссылается на страну»)
3. Теперь, важно подготовить тестовые данные для загрузки
Создаем файл data.xml
id=«group0»
id=«group1»
требует создания новых групп
Русский имеет id записи = 52, английский = 1
1. Создаем модель страны
Class country(models.Model):
_name = 'test.country'
name = fields.Char(string=«Наименование страны»)
description = fields.Text(string=«Описание страны»)
/// ссылка на язык страны
responsible_id = fields.Many2one('res.lang',ondelete='set null', string=«Язык страны»)
/// ссылка на группу страны
group_id = fields.Many2one('ticketbus.group_lang_country',ondelete='set null', string=«Группа»)
2.Создаем группу страны
class group_lang_country(models.Model):
_name = 'test.group_lang_country'
/// вычиcляемое поле наименование страны
/// related указывает, что необходимо из отношения country_id взять наименование страны
name = fields.Char(related='country_id.name',store=False, string=«Наименование страны»)
/// вычиcляемое поле языка страны
/// related указывает, что необходимо из отношения country_id взять отношение responsible_id из модели test.country и получить наименование языка из модели res.lang
lang=fields.Char(related='country_id.responsible_id.name',store=False, string=«Язык страны»)
/// группа ссылается на несколько стран
country_id = fields.One2many('ticketbus.country','group_id',string=«Ссылается на страну»)
3. Теперь, важно подготовить тестовые данные для загрузки
Создаем файл data.xml
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
/// эта запись создает в базе группу
<record model="test.group_lang_country" id="group0"/>
/// создаем страны
<record model="test.country" id="country0">
<field name="name">БЕЛАРУСЬ</field>
/// привязываем ссылку на группу
<field name="group_id" ref="group0"></field>
//// привязываем язык
<field name="responsible_id" eval="52"></field>
</record>
<record model="test.country" id="country0">
<field name="name">BELARUS</field>
<field name="group_id" ref="group0"></field>
<field name="responsible_id" eval="1"></field>
</record>
<record model="test.group_lang_country" id="group1"/>
<record model="test.country" id="country1">
<field name="name">РОССИЯ</field>
<field name="group_id" ref="group0"></field>
<field name="responsible_id" eval="52"></field>
</record>
<record model="test.country" id="country1">
<field name="name">RUSSIA</field>
<field name="group_id" ref="group1"></field>
<field name="responsible_id" eval="1"></field>
</record>
</data>
</odoo>
</cut>
id=«group0»
id=«group1»
требует создания новых групп
Последний раз редактировал пользователь
aladkoi
-
21 апреля 2017, 11:19