Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
OpenERP(python)-记录ID的条件搜索?_Python_Search_Openerp_Wizard - Fatal编程技术网

OpenERP(python)-记录ID的条件搜索?

OpenERP(python)-记录ID的条件搜索?,python,search,openerp,wizard,Python,Search,Openerp,Wizard,在打印报告之前,我会使用各种搜索选项筛选报告。例如,给它一个日期时间,它将只打印介于该日期时间之间的记录。但若用户并没有提供日期,那个么搜索将跳过该参数并按其他选择的选项进行过滤,等等 这个搜索是由一个向导触发的,用户在向导中输入搜索选项,然后按下打印按钮。 当您不知道用户是否输入了某些条件或保留为空时,我似乎找不到正确实现条件搜索的方法。所以我设法做了一些如下的工作: card_id = datas['form']['card_id'][0] if card_i

在打印报告之前,我会使用各种搜索选项筛选报告。例如,给它一个日期时间,它将只打印介于该日期时间之间的记录。但若用户并没有提供日期,那个么搜索将跳过该参数并按其他选择的选项进行过滤,等等

这个搜索是由一个向导触发的,用户在向导中输入搜索选项,然后按下打印按钮。 当您不知道用户是否输入了某些条件或保留为空时,我似乎找不到正确实现条件搜索的方法。所以我设法做了一些如下的工作:

    card_id = datas['form']['card_id'][0]        
    if card_id:
        start_filter = (1, '=', 1)
        end_filter = (1, '=', 1)
        if datas['form']['start_date']: 
            start_date = datas['form']['start_date']                
            start_filter = ('date', '>=', start_date)
        if datas['form']['end_date']:
            end_date = datas['form']['end_date']
            end_filter = ('date', '<', end_date)

        message_ids = self.pool.get('mail.message').search(self.cr, self.uid, 
        [('res_id', '=', card_id), ('model','=', 'some.model'),
        start_filter, end_filter], order='write_date') 
card\u id=datas['form']['card\u id'][0]
如果卡的id为:
启动过滤器=(1,'=',1)
end_过滤器=(1,'=',1)
如果数据['form']['start_date']:
开始日期=数据['form']['start\u date']
开始过滤器=('date','>=',开始日期)
如果数据['form']['end_date']:
结束日期=数据['form']['end\u date']
end_filter=('date','您不需要使用(1',=',1)作为默认值。如果向搜索函数传递搜索元组的空列表,它将在应用为模型定义的任何记录规则后返回所有记录


这种模式非常常见,除了结构化代码之外,我还没有发现整理代码的方法。您可以从一个空的搜索元组列表开始,然后调用一组方法,依次生成每个搜索元组并附加到列表中。

确切地说,只需从一个空列表开始,并用e附加搜索元组即可您的向导(或用户输入)提供了很多条件,如:
filter=[]
-->用户输入开始日期?-->
filter.append('start\u date','=',wizard.start\u date')
-->等等