Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多个滤清器1字段-奥多v8_Python_Openerp_Odoo 8 - Fatal编程技术网

Python 多个滤清器1字段-奥多v8

Python 多个滤清器1字段-奥多v8,python,openerp,odoo-8,Python,Openerp,Odoo 8,我知道我可以使用domain标志从python代码甚至xml视图中过滤manyOne字段,但我现在有一个稍微不同的场景 考虑使用这样的模型: class MyModel(models.Model): _name = 'mymodel' fieldsel = fields.Selection([('sheet', 'Sheet'),('reel','Reel')], string='Printing PPT Type', track_visibility='onchan

我知道我可以使用
domain
标志从python代码甚至xml视图中过滤
manyOne
字段,但我现在有一个稍微不同的场景

考虑使用这样的模型:

class MyModel(models.Model):
    _name = 'mymodel'

    fieldsel = fields.Selection([('sheet', 'Sheet'),('reel','Reel')], string='Printing PPT Type', 
    track_visibility='onchange', copy=False,
    help=" ")
    fieldmany = fields.Many2one('text.paper', string="Text Paper")
class text_paper(models.Model):
    _name = 'text.paper'

    name = fields.Char(string="Code")
    paper_type = fields.Selection([('sheet', 'Sheet'),('reel','Reel')], string="Paper Type")
text.paper
模型有另一个选择字段,该字段的值与
fieldsel
相同,但是,我不能使用
domain
,因为它将静态过滤每个
文本.paper

我的问题是,我需要根据我从
fieldsel
中选择的选项筛选
text.paper
,因此,让我们假设
text.paper
如下所示:

class MyModel(models.Model):
    _name = 'mymodel'

    fieldsel = fields.Selection([('sheet', 'Sheet'),('reel','Reel')], string='Printing PPT Type', 
    track_visibility='onchange', copy=False,
    help=" ")
    fieldmany = fields.Many2one('text.paper', string="Text Paper")
class text_paper(models.Model):
    _name = 'text.paper'

    name = fields.Char(string="Code")
    paper_type = fields.Selection([('sheet', 'Sheet'),('reel','Reel')], string="Paper Type")
我需要根据
fieldsel
字段,从
mymodel
中过滤
text.paper
,如果选择了卷盘,则过滤
text.paper
,如果选择了纸张,则相应过滤
text.paper

我希望我已经解释清楚了


有什么想法吗?

您需要的是动态域,您可以通过onchange事件实现这一点

类MyModel(models.Model):
_name='mymodel'
....
...
@api.onchange('fieldsel')
def更改域(自身):
“”“每当用户更改所选值时,请更改fieldmany的域。”“”
self.fieldmany=False#当用户更改所选值时,您可能希望重置该值
如果self.fieldsel:#确保用户选择了一个值
返回{'domain':{fieldmany:[('paper_type','=',self.fieldsel)]}
其他:#删除域
返回{'domain':{fieldmany:[]}

这里帮助@NeoVe记住,当你处理动态域时,你有两个选择,一个简单的onChange就足够了,但有时你需要覆盖
name\u search
方法,因为它是许多域调用的过滤记录的函数。很酷,很高兴知道,谢谢!