传入可变参数,使用search方法查询订单,一开始,我使用的是sql语句拼接的方法,类似这种:
sql = """select * from online_order where """
if orderid is not None:
sql = sql + "orderid = " + orderid
if orderBusinessType is not None:
sql = sql + "orderBusinessType" + orderBusinessType
但是这种方法看起来还是比较繁琐,所以改用**kwargs可变参数,当传入参数后,因为他是个字典,并不符合odoo中domain的用法格式,因此,需要分别取出字典的键和值,重新拼接到domain中
@route('/oms/get/getOrderList', type='http', auth='none', cors='*', csrf=False)
def get_order_type_list(self, **kwargs):
domain = []
for k, v in kwargs.items():
factor = (k, '=', v)
domain.append(factor)
result = request.env['online_order'].search(domain)
这样就解决了参数不定,不好使用search查询功能的问题
def get_order_type_list(self, **kwargs):
domain = []
for k, v in kwargs.items():
if k == 'start_time':
factor = ('ordertime', '>', v)
domain.append(factor)
elif k == 'end_time':
factor = ('ordertime', '<', v)
domain.append(factor)
else:
factor = (k, '=', v)
domain.append(factor)