我尝试使用分层视图为产品类别创建自己的自定义模块。
我的主要要求是,我能够创建具有折叠,展开功能的视图。
以下是一个例子:
|类别根(UNFolded)
|Category A (UNFolded)
|Sub Category A1
|Category B (UnFolded)
|Sub Category B1
|Sub Category B2
|Sub Category B3
|Category C (Folded)
如果我点击C类行,我将能够展开它并查看它的子类别。
我尝试了以下内容: 对于班级
class odepoCategory(models.Model):
_name = 'odepo.category'
name = fields.Char(string='Nom Category')
parentCategory = fields.Many2one('odepo.category', string='Categorie Pére', select=True, ondelete='cascade')
subCategories = fields.One2many('odepo.category', 'name', string='Sous Categories')
视图
<?xml version="1.0"?>
<openerp>
<data>
<record model="ir.ui.view" id="enquiry_tree_view_leads">
<field name="name">view.enquiry.leads.tree</field>
<field name="model">odepo.category</field>
<field name="field_parent">subCategories</field>
<field name="arch" type="xml">
<tree toolbar="True" string="Enquiry Leads">
</tree>
</field>
</record>
<record model="ir.ui.view" id="enquiry_tree_view_leads">
<field name="name">view.enquiry.leads.form</field>
<field name="model">odepo.category</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Shipping Information">
<group>
<field name="parentCategory"/>
<field name="name"/>
<!-- <field name="subCategories"/> -->
</group>
</form>
</field>
</record>
<record id="product_category_action" model="ir.actions.act_window">
<field name="name">Products by Category</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">odepo.category</field>
<field name="domain">[('parentCategory','=',False)]</field>
<field name="view_type">tree</field>
<field name="help" type="html">
<p>
Here is a list of all your products classified by category. You
can click a category to get the list of all products linked to
this category or to a child of this category.
</p>
</field>
</record>
<!-- Action to open To-do Task list -->
<act_window id="action_todo_task"
name="To-do Task"
res_model="odepo.category"
view_mode="tree,form" />
<!-- Menu item to open To-do Task list -->
<menuitem id="menu _todo_task"
name="To-Do Tasks"
parent="mail.mail_feeds"
sequence="20"
action="action_todo_task" />
</data>
</openerp>
Howerver我不知道如何显示分层视图。
答案 0 :(得分:1)
在您的情况下,您必须在该对象中定义父和子 关系。 只需要遵循Odoo基础插件中的产品基础模块中的product.category对象
只需检查以下代码并添加parent_id和child_id关系。
parent_id将其设为多个关系类型字段
child_id将其设为one2many关系类型字段
_name = "product.category"
_description = "Product Category"
_columns = {
'name': fields.char('Name', required=True, translate=True, select=True),
'complete_name': fields.function(_name_get_fnc, type="char", string='Name'),
'parent_id': fields.many2one('product.category','Parent Category', select=True, ondelete='cascade'),
'child_id': fields.one2many('product.category', 'parent_id', string='Child Categories'),
'sequence': fields.integer('Sequence', select=True, help="Gives the sequence order when displaying a list of product categories."),
'type': fields.selection([('view','View'), ('normal','Normal')], 'Category Type', help="A category of the view type is a virtual category that can be used as the parent of another category to create a hierarchical structure."),
'parent_left': fields.integer('Left Parent', select=1),
'parent_right': fields.integer('Right Parent', select=1),
}
为产品类别视图XML文件添加代码:
<record id="product_category_tree_view" model="ir.ui.view">
<field name="name">product.category.tree</field>
<field name="model">product.category</field>
<field name="field_parent">child_id</field>
<field name="arch" type="xml">
<tree toolbar="True" string="Product Categories">
<field name="name"/>
</tree>
</field>
</record>
<record id="product_category_action" model="ir.actions.act_window">
<field name="name">Products by Category</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">product.category</field>
<field name="domain">[('parent_id','=',False)]</field>
<field name="view_type">tree</field>
<field name="view_id" ref="product_category_tree_view"/>
<field name="help" type="html">
<p>
Here is a list of all your products classified by category. You
can click a category to get the list of all products linked to
this category or to a child of this category.
</p>
</field>
</record>
在您的XML文件中您必须在树视图中将field_parent设置为child_id和toolbar =“True”。 在您的产品类别操作视图中添加域名[('parent_id','=',False)]
如果你这样做并配置得好,那么Odoo会自动为你设置父类型列表视图。
我希望我的回答对您有所帮助:)。