Odoo v9问题,列没有在相关字段上排序

时间:2018-03-02 09:32:18

标签: python xml python-2.7 odoo odoo-9

我遇到的问题是某些相关字段的列无法排序。

我已使用以下代码段扩展了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')

我已使用以下代码段扩展了销售/机会模块:

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: 加载商机页面后,点击&#34;构建类型&#34; (industry_id)标题什么也没做。

问题2: 此外,点击&#34;项目&#34; (crm_project_id)标题,列按id而不是名称排序(即使它显示名称)。

我认为问题2可以通过添加到crm.project.py来解决:

_order = "name asc"

但它不起作用。

非常感谢任何帮助。

更新

将store = True添加到相关字段的方法有效。但是存在一个问题,如果该字段已经创建,那么它将/可能不会使用最新发布的数据进行更新。

为了解决这个问题,我使用与原始信息相同的信息创建了另一个字段,然后将其链接到该字段。我已经读过其他人放弃了字段并再次创建它们。

1 个答案:

答案 0 :(得分:3)

相关字段未存储在数据库中,您无法通过未存储在数据库中的字段进行排序,因此该部分的解决方案是将store=True添加到相关字段:< / p>

industry_id = fields.Many2one('crm.project.industry', 'Construction Type',related='crm_project_id.industry_id', readonly=True, store=True)

您的 Project 字段应该正常工作,如果记录按名称排序,您是否已检查crm.project的树视图?另请查看name_get及其crm.project字段的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字段,毫无疑问。)