Openerp 从选定项目获取任务

Openerp 从选定项目获取任务,openerp,Openerp,我正在尝试实现一个manyOne选择字段,从中选择项目。如果您选择了一个项目,那么还有另一个manyOne字段,您可以从中选择任务。这些任务都需要来自所选项目 目前我得到了这个(请注意,我无法测试它,因为我一直收到一个XML错误): 我的XML如下所示: <record id="purchase_order_form" model="ir.ui.view"> <field name="name">purchase.order.form</fie

我正在尝试实现一个manyOne选择字段,从中选择项目。如果您选择了一个项目,那么还有另一个manyOne字段,您可以从中选择任务。这些任务都需要来自所选项目

目前我得到了这个(请注意,我无法测试它,因为我一直收到一个XML错误):

我的XML如下所示:

   <record id="purchase_order_form" model="ir.ui.view">
        <field name="name">purchase.order.form</field>
        <field name="model">purchase.order</field>
        <field name="inherit_id" ref="purchase.purchase_order_form"/>
        <field name="arch" type="xml">
            <field name="origin" position="after">
                <field name="project_id" on_change="_get_task(project_id)"/>
                <field name="task_id" selection="widget"/>
            </field>
        </field>
    </record>

采购单
采购订单

这里的XML有什么问题?还有其他方法吗?

在您的情况下,无需编写根据项目筛选任务的方法,只需更改以下几点

class purchase_order(osv.osv):
_inherit = 'purchase.order'

_columns = {
    'project_id': fields.many2one('project.project', 'Project'),
    'task_id': fields.many2one('project.task', 'Tasks'),
}
并更改您的xml

<record id="purchase_order_form" model="ir.ui.view">
        <field name="name">purchase.order.form</field>
        <field name="model">purchase.order</field>
        <field name="inherit_id" ref="purchase.purchase_order_form"/>
        <field name="arch" type="xml">
            <field name="origin" position="after">
                <field name="project_id" />
                <field name="task_id" domain="[('project_id','=',project_id.id)]" widget="selection" />
            </field>
        </field>
    </record>

采购单
采购订单
在您现有的代码中,您犯了一个小错误


selection=“widget”
在xml中无效您应该编写
widget=“selection”
这解决了我的问题,我添加了一个字段。与链接字段相关:

    _columns = {
    'task_id': fields.related('project_id', 'tasks', type='many2one', relation='project.task', store=True,
                              string='Task')
}
然后调整我的XML(如@Empiro Technologies所说):


采购单
采购订单
    _columns = {
    'task_id': fields.related('project_id', 'tasks', type='many2one', relation='project.task', store=True,
                              string='Task')
}
    <record id="purchase_order_form" model="ir.ui.view">
        <field name="name">purchase.order.form</field>
        <field name="model">purchase.order</field>
        <field name="inherit_id" ref="purchase.purchase_order_form"/>
        <field name="arch" type="xml">
            <field name="origin" position="after">
                <field name="project_id"/>
                <field name="task_id" domain="[('project_id','=', project_id)]"/>
            </field>
        </field>
    </record>