Odoo. Данные поля отображения дерева / формы

У меня есть некоторые проблемы с представлением дерева / формы в Odoo.

У моей модели есть такие классы: https://yadi.sk/d/sCLVo3gHtbVEu

class URLList(models.Model):
    _name = 'webvisitorcalc.url_list'

    url = fields.Char(string="URL", required=True)
    url_parametes = fields.Char(string="URL parameters") #пераметры URLб всё что идёт после ?

    target_session_id = fields.One2many('webvisitorcalc.session_visitor', 'target_url_ids', string='Target URL')

    site_trip_prevouse_id = fields.One2many('webvisitorcalc.site_trip', 'url_prevouse_ids', string='Prevouse URL')
    site_trip_current_id = fields.One2many('webvisitorcalc.site_trip', 'url_current_ids', string='Current URL')


    remote_sites_id = fields.One2many('webvisitorcalc.remote_sites', 'site_url_ids', string='Remote site page with URL')
    remote_sites_target_url_id = fields.One2many('webvisitorcalc.remote_sites', 'target_url_ids', string='URL on remote site page')

    @api.multi
    def url_exist(self, cr, SUPERUSER_ID, urlForCheck):
        _logger.error("Check URL exist in DB ")
        result = False
        if (self.search_count(cr, SUPERUSER_ID, [('url', '=', urlForCheck)])>0):
            result = True
        return result

class SiteTrip(models.Model):
    _name = 'webvisitorcalc.site_trip'

    session_ids = fields.Many2one('webvisitorcalc.session_visitor', string='Session ID', index=True)
    url_prevouse_ids = fields.Many2one('webvisitorcalc.url_list', string='Prevouse URL', index=True)
    url_current_ids = fields.Many2one('webvisitorcalc.url_list', string='Current URL', index=True)

Шаблон для этой модели: https://yadi.sk/d/Ob0o65PutbVFA

<record model="ir.actions.act_window" id="site_trip_list_action">
    <field name="name">Site trip</field>
    <field name="res_model">webvisitorcalc.site_trip</field>
    <field name="view_type">form</field>
    <field name="view_mode">tree,form</field>
    <field name="help" type="html">
        <p class="oe_view_nocontent_create">Create the first record for site trip
        </p>
    </field>
</record>
<record model="ir.actions.act_window" id="url_list_list_action">
    <field name="name">URL list</field>
    <field name="res_model">webvisitorcalc.url_list</field>
    <field name="view_type">form</field>
    <field name="view_mode">tree,form</field>
    <field name="help" type="html">
        <p class="oe_view_nocontent_create">Create the first url
        </p>
    </field>
</record>

<record model="ir.ui.view" id="site_trip_tree_view">
    <field name="name">site_trip.tree</field>
    <field name="model">webvisitorcalc.site_trip</field>
    <field name="arch" type="xml">
        <tree string="URL list tree">
            <field name="session_ids"/>
            <field name="url_prevouse_ids" string="PrevURL">
            </field>
            <!--<field name="url_prevouse_ids"/>-->
            <field name="url_current_ids"/>
        </tree>
    </field>
</record>

<record model="ir.ui.view" id="url_list_tree_view">
    <field name="name">url_list.tree</field>
    <field name="model">webvisitorcalc.url_list</field>
    <field name="arch" type="xml">
        <tree string="URL list tree">
            <field name="url"/>
            <field name="url_parametes"/>
        </tree>
    </field>
</record>

<menuitem id="site_trip_menu" name="Site trip" parent="webvisitorcalc_menu"
          action="site_trip_list_action"/>

<menuitem id="url_list_menu" name="URL list" parent="webvisitorcalc_menu"
          action="url_list_list_action"/>

Скриншоты здесь:

Древовидное представление для класса SiteTrip

Форма представления для класса SiteTrip

Древовидное представление для класса URLList

Представление формы для класса URLList

Как видите, URLList отображается нормально. Для класса SiteTrip настоящая проблема. Поле отображает не данные из URLList. Это хранящийся в поле элемент, такой как webvisitorcalc.url_list.ID (array?). Как я могу отображать реальные данные в этом поле (например, URL: http://some-site.com/page.html)? URL в URLList должен быть уникальным. SiteTrip должен хранить только идентификатор записи URLList.

UPD:

class RemoteSites(models.Model):
    _name = 'webvisitorcalc.remote_sites'

    site_id = advert_company_id = fields.One2many('webvisitorcalc.site_list', 'remote_sites_ids', string='Site')
    site_url_ids = fields.Many2one('webvisitorcalc.url_list', string='URL page ')
    target_url_ids = fields.Many2one('webvisitorcalc.url_list', string='URL target page')

1 ответ

Решение

У вас явно нет поля имени на вашем webvisitorcalc.url_list модель. Это необходимо Odoo для использования его в качестве имени в веб-клиенте, где бы вы ни использовали эту модель, например, в поле many2one или в навигационной системе.

Так что либо вы определяете поле имени, либо вы устанавливаете _name в вашем классе с другим идентификатором поля.

Вы также можете (пере) определить метод display_name на вашей модели (достаточно примеров в коде Odoo), где вы можете делать больше интересных вещей с отображаемым именем записи:-)

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