请查看以下代码块:
class hr_payslip:
...
@api.multi # same behavior with or without method decorators
def do_something(self):
print "self------------------------------->",self
for r in self:
print "r------------------------------->",r
正如您所看到的,我正在覆盖'hr.payslip'模型,我需要访问此方法中的一些字段。问题是,对我来说打印的内容没有意义:
self-------------------------------> hr.payslip(hr.payslip(1,),) r-------------------------------> hr.payslip(hr.payslip(1,),)
为什么在for循环内外都是一样的东西。如果它总是一个'记录集',那么如何访问一个记录的字段。
我缺乏理解也可能与这个问题有关:
答案 0 :(得分:1)
使用RecordSets总是意味着使用RecordSets。循环遍历一个RecordSet时,您将获得RecordSets作为循环变量。但是,当RecordSet的长度为1或0时,您只能直接访问字段。您可以相当容易地测试它(在数据库中多于一个工资单!):
slips = self.env['hr.payslip'].search([])
# Exception because you cannot access the field directly on multi entries
print slips.id
# Working
print slips.ids
for slip in slips:
print slip.id