本文整理汇总了Python中trytond.transaction.Transaction.setdefault方法的典型用法代码示例。如果您正苦于以下问题:Python Transaction.setdefault方法的具体用法?Python Transaction.setdefault怎么用?Python Transaction.setdefault使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类trytond.transaction.Transaction
的用法示例。
在下文中一共展示了Transaction.setdefault方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get
# 需要导入模块: from trytond.transaction import Transaction [as 别名]
# 或者: from trytond.transaction.Transaction import setdefault [as 别名]
def get(self, ids, model, name, values=None):
'''
Return target records ordered.
:param ids: a list of ids
:param model: a string with the name of the model
:param name: a string with the name of the field
:param values: a dictionary with the read values
:return: a dictionary with ids as key and values as value
'''
pool = Pool()
res = {}
for i in ids:
res[i] = []
ids2 = []
for i in range(0, len(ids), Transaction().cursor.IN_MAX):
sub_ids = ids[i:i + Transaction().cursor.IN_MAX]
ids2.append(pool.get(self.model_name).search([
(self.field, 'in', sub_ids),
], order=self.order))
cache = Transaction().cursor.get_cache(Transaction().context)
cache.setdefault(self.model_name, {})
ids3 = []
for i in chain(*ids2):
if i in cache[self.model_name] \
and self.field in cache[self.model_name][i]:
res[cache[self.model_name][i][self.field].id].append(i)
else:
ids3.append(i)
if ids3:
for i in pool.get(self.model_name).read(ids3, [self.field]):
res[i[self.field]].append(i['id'])
index_of_ids2 = dict((i, index)
for index, i in enumerate(chain(*ids2)))
for val in res.values():
val.sort(key=lambda x: index_of_ids2[x])
return res