Odoo v9 列未在相关字段上排序的问题
Odoo v9 Issue with columns not sorting on related fields
我遇到一个问题,即某些相关字段的列无法排序。
我使用以下代码片段扩展了 res.partner 表单:
class CrmProject(models.Model):
_name = 'crm.project'
_inherit = ['mail.thread', 'ir.needaction_mixin']
_inherits = {
'res.partner': 'partner_id',
}
_order = "name asc"
@api.model
def _get_domain_employee(self):
ids = self.env.ref('aim_contacts.res_partner_business_2').ids
return [('business_id', '=', ids)]
.
.
industry_id = fields.Many2one('crm.project.industry', 'Construction Type')
我已经使用以下代码片段扩展了 sales/opportunity 模块:
class CrmOpportunity(models.Model):
_name = 'crm.opportunity'
_inherit = ['mail.thread', 'ir.needaction_mixin', 'aim.res.common']
_order = 'name asc'
@api.model
def _get_domain_employee(self):
ids = self.env.ref('aim_contacts.res_partner_business_2').ids
return [('business_id', '=', ids)]
name = fields.Char('Topic', required=True)
.
.
crm_project_id = fields.Many2one('crm.project', 'Project', track_visibility='onchange')
industry_id = fields.Many2one('crm.project.industry', 'Construction Type',related='crm_project_id.industry_id', readonly=True)
视图定义如下:
<record id="crm_opportunity_tree_view" model="ir.ui.view">
<field name="name">crm.opportunity.tree.view</field>
<field name="model">crm.opportunity</field>
<field name="arch" type="xml">
<tree string="Opportunities">
<field name="name" string="Topic" invisible="1"/>
<field name="crm_project_id"/>
<field name="industry_id"/>
</tree>
</field>
</record>
问题 1:
加载机会页面后,单击 "Construction Type" (industry_id) header 什么都不做。
问题二:
此外,当单击 "Project" (crm_project_id) header 时,该列按 ID 而不是名称排序(即使它显示的是名称)。
我认为问题 2 可以通过添加 crm.project.py:
来解决
_order = "name asc"
但是没有用。
如有任何帮助,我们将不胜感激。
更新
相关字段添加store=True的方法有效。有一个问题,如果该字段已经创建,那么它 will/may 不会更新最新的数据。
为了解决这个问题,我创建了另一个与原始字段具有相同信息的字段,然后链接到它。我读到其他人删除字段并重新创建它们。
相关字段没有存储在数据库中,不能按没有存储在数据库中的字段进行排序,所以该部分的解决方案是在相关字段中添加一个store=True
:
industry_id = fields.Many2one('crm.project.industry', 'Construction Type',related='crm_project_id.industry_id', readonly=True, store=True)
您的 Project 字段应该工作正常,您是否检查过 crm.project
的树视图是否记录按名称排序?还要检查 crm.project
的 name_get
方法及其 display_name
字段。您可以解决此问题,将其他存储的相关字段添加到您的 crm.opportunity
模型:
crm_project_name = fields.Char('crm.project', 'Construction Type',related='crm_project_id.name', store=True)
在你的 XML 中:
<record id="crm_opportunity_tree_view" model="ir.ui.view">
<field name="name">crm.opportunity.tree.view</field>
<field name="model">crm.opportunity</field>
<field name="arch" type="xml">
<tree string="Opportunities">
<field name="name" string="Topic" invisible="1"/>
<field name="crm_project_id" invisible="1"/>
<field name="crm_project_name"/>
<field name="industry_id"/>
</tree>
</field>
</record>
如果您赶时间(在查找问题时),请执行此操作。但是我会做 name
的相关字段以及 display_name
的相关字段,并在树视图中对它们进行排序以检查会发生什么(如果 display_name
列按 ID 排序,那么毫无疑问,问题是 name_get
方法或 display_name
字段。
我遇到一个问题,即某些相关字段的列无法排序。
我使用以下代码片段扩展了 res.partner 表单:
class CrmProject(models.Model):
_name = 'crm.project'
_inherit = ['mail.thread', 'ir.needaction_mixin']
_inherits = {
'res.partner': 'partner_id',
}
_order = "name asc"
@api.model
def _get_domain_employee(self):
ids = self.env.ref('aim_contacts.res_partner_business_2').ids
return [('business_id', '=', ids)]
.
.
industry_id = fields.Many2one('crm.project.industry', 'Construction Type')
我已经使用以下代码片段扩展了 sales/opportunity 模块:
class CrmOpportunity(models.Model):
_name = 'crm.opportunity'
_inherit = ['mail.thread', 'ir.needaction_mixin', 'aim.res.common']
_order = 'name asc'
@api.model
def _get_domain_employee(self):
ids = self.env.ref('aim_contacts.res_partner_business_2').ids
return [('business_id', '=', ids)]
name = fields.Char('Topic', required=True)
.
.
crm_project_id = fields.Many2one('crm.project', 'Project', track_visibility='onchange')
industry_id = fields.Many2one('crm.project.industry', 'Construction Type',related='crm_project_id.industry_id', readonly=True)
视图定义如下:
<record id="crm_opportunity_tree_view" model="ir.ui.view">
<field name="name">crm.opportunity.tree.view</field>
<field name="model">crm.opportunity</field>
<field name="arch" type="xml">
<tree string="Opportunities">
<field name="name" string="Topic" invisible="1"/>
<field name="crm_project_id"/>
<field name="industry_id"/>
</tree>
</field>
</record>
问题 1: 加载机会页面后,单击 "Construction Type" (industry_id) header 什么都不做。
问题二: 此外,当单击 "Project" (crm_project_id) header 时,该列按 ID 而不是名称排序(即使它显示的是名称)。
我认为问题 2 可以通过添加 crm.project.py:
来解决_order = "name asc"
但是没有用。
如有任何帮助,我们将不胜感激。
更新
相关字段添加store=True的方法有效。有一个问题,如果该字段已经创建,那么它 will/may 不会更新最新的数据。
为了解决这个问题,我创建了另一个与原始字段具有相同信息的字段,然后链接到它。我读到其他人删除字段并重新创建它们。
相关字段没有存储在数据库中,不能按没有存储在数据库中的字段进行排序,所以该部分的解决方案是在相关字段中添加一个store=True
:
industry_id = fields.Many2one('crm.project.industry', 'Construction Type',related='crm_project_id.industry_id', readonly=True, store=True)
您的 Project 字段应该工作正常,您是否检查过 crm.project
的树视图是否记录按名称排序?还要检查 crm.project
的 name_get
方法及其 display_name
字段。您可以解决此问题,将其他存储的相关字段添加到您的 crm.opportunity
模型:
crm_project_name = fields.Char('crm.project', 'Construction Type',related='crm_project_id.name', store=True)
在你的 XML 中:
<record id="crm_opportunity_tree_view" model="ir.ui.view">
<field name="name">crm.opportunity.tree.view</field>
<field name="model">crm.opportunity</field>
<field name="arch" type="xml">
<tree string="Opportunities">
<field name="name" string="Topic" invisible="1"/>
<field name="crm_project_id" invisible="1"/>
<field name="crm_project_name"/>
<field name="industry_id"/>
</tree>
</field>
</record>
如果您赶时间(在查找问题时),请执行此操作。但是我会做 name
的相关字段以及 display_name
的相关字段,并在树视图中对它们进行排序以检查会发生什么(如果 display_name
列按 ID 排序,那么毫无疑问,问题是 name_get
方法或 display_name
字段。