Odoo - Поле `product_variant_count` не существует - PullRequest
0 голосов
/ 07 октября 2018

Я создал пользовательскую модель с именем Product_Videos, которая будет содержать несколько видео для одного продукта. Вот моя модель: из моделей импорта odoo, полей, API

class Product_Videos(models.Model):
    _name = "product.videos"

    embed_id = fields.Char(string='Embed Code Id')
    product_id = fields.Many2one("product.template", "Product")

Затем я унаследовал модель продукта, чтобы связатьto Product_Videos: из моделей импорта odoo, api, поля

class Product(models.Model):
    _inherit = "product.template"

    # Tab Fields
    x_videos = fields.One2many("product.videos", "product_id", "Videos")

Теперь я унаследовал представление шаблона продукта и добавил новую вкладку под названием видео следующим образом:

<?xml version="1.0" encoding="utf-8" ?>

<odoo>
    <data>
        <record id="product.tabs-inherited" model="ir.ui.view">
            <field name="name">product.template.tabs</field>
            <field name="model">product.template</field>
            <field name="inherit_id" ref="product.product_template_only_form_view" />
            <field name="arch" type="xml">
                <xpath expr="//page[@name='notes']" position="after">
                    <page string="Videos" name="videos">
                        <field name="x_videos"/>
                    </page>
                </xpath>
            </field>
        </record>  
    </data>
</odoo>

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

<?xml version="1.0" encoding="utf-8" ?>

<odoo>
        <record id="product-video-inherited" model="ir.ui.view">
            <field name="name">product.video.embed</field>
            <field name="model">product.videos</field>
            <field name="inherit_id" ref="product.tabs-inherited" />
            <field name="arch" type="xml">
                <xpath expr="//page[@name='videos']" position="inside">
                    <field name="embed_id" />
                </xpath>
            </field>
        </record>  
</odoo>

Но когда я обновляю модуль, яполучаю:

Поле product_variant_count не существует

Я понятия не имею, откуда берется это поле product_variant_count, но я заметил, что если я заменю

<field name="model">product.videos</field>

С другой моделью, такой как product.template Работает просто отлично.

Есть идеи?Спасибо

1 Ответ

0 голосов
/ 08 октября 2018

Когда вы применяете наследование представления XML в Odoo, это означает (обычно), что новое представление будет наследовать существующее представление той же модели.Таким образом, ваше представление product-video-inherited должно быть определено, чтобы модель product.template работала так, как вы ожидаете.

Чтобы определить, какие поля модели product.videos будут видны в поле o2m x_videos, вы можете определить подпредставление, например:

    <record id="product.tabs-inherited" model="ir.ui.view">
        <field name="name">product.template.tabs</field>
        <field name="model">product.template</field>
        <field name="inherit_id" ref="product.product_template_only_form_view" />
        <field name="arch" type="xml">
            <xpath expr="//page[@name='notes']" position="after">
                <page string="Videos" name="videos">
                    <field name="x_videos">
                        <tree>
                            <field name="embed_id"/>
                        </tree>
                    </field>
                </page>
            </xpath>
        </field>
    </record>

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

...