Python 未设置任何默认值

Python 未设置任何默认值,python,openerp,default,openerp-8,Python,Openerp,Default,Openerp 8,我编写了一个向导,表单视图应该显示一个one2many字段,其中的行取自上下文['active_id'] 我正确地设置了one2many默认值,但是当窗体打开时,不会显示任何行 我错过什么了吗?(我为代码错误缩进道歉) 问题可能在于: res['details'] = **[(6, False, dws)]** 您的详细信息字段是一个One2many字段,[(6,0,[ID])]用于多个字段。 在您的情况下,您不需要为details字段分配任何内容;它是一个One2many,因此它是自动的,因

我编写了一个向导,表单视图应该显示一个one2many字段,其中的行取自上下文['active_id']

我正确地设置了one2many默认值,但是当窗体打开时,不会显示任何行

我错过什么了吗?(我为代码错误缩进道歉)


问题可能在于:

res['details'] = **[(6, False, dws)]**
您的详细信息字段是一个One2many字段,[(6,0,[ID])]用于多个字段。 在您的情况下,您不需要为details字段分配任何内容;它是一个One2many,因此它是自动的,因为您已经创建了相应的manyOne记录(dw)

:

  • 对许多人来说
对于多个字段,需要一个元组列表。这是名单 接受的元组的类型,以及相应的语义

(0,0,{values})链接到需要创建的新记录 使用给定的值字典

(1,ID,{values})用ID=ID(write)更新链接记录 (上面的值)

(2,ID)删除和删除ID为的链接记录= ID(在ID上调用unlink,这将完全删除对象,并且 连接到它的链接)

(3,ID)剪切到ID=ID的链接记录的链接 (删除两个对象之间的关系,但不删除 目标对象本身)

(4,ID)链接到ID=ID的现有记录(添加 关系)

(5) 取消所有链接(如使用(3,ID)进行所有链接 (记录)

(6,0,[ID])替换链接ID列表(如使用(5) 然后(4,ID)用于ID列表中的每个ID)

示例:[(6,0,[8,5,6,4])]将many2many设置为ids[8,5,6, 4]

  • 还有一个:
(0,0,{values})链接到需要创建的新记录 使用给定的值字典

(1,ID,{values})用ID=ID(write)更新链接记录 (上面的值)

(2,ID)删除和删除ID为的链接记录= ID(在ID上调用unlink,这将完全删除对象,并且 连接到它的链接)

示例:[(0,0,{'field_name':field_value_record1,…}),(0,0, {'field\u name':field\u value\u record2,…}]

此外,如果您希望您的代码易于其他人理解,请尝试遵循多个One/One2many字段:

一个2多个2多个字段应始终以\u id作为后缀(例如:销售\订单\行\ id)

许多字段的后缀应为\u id(例如:合作伙伴id、用户id等)


我试着用res['details']=[(0,0,dws)]和dws使用dict数组,但后来我意识到我只需要res['details']=dws。关于指导原则,您是对的,但是对于新的API8IMHO,这应该不再需要了,因为“ID”不仅仅是数字,而是整个对象。例如,表示法object_id.id是冗余的。它可能有向后兼容的感觉……我同意现在感觉有点不推荐,但是object\u record/object\u records似乎有点冗长,不是吗?;)也许他们将来会指向类似object\u rd/object\u rds的东西,谁知道呢。似乎你不需要“传递”:self.id实际上self.id==False,因为你意识到你只需要res['details']=dws插入父对象后,有一种神奇的方法可以将self.id的“delivery”字段分配给子实体。您确定要在default\u get中使用self.id吗?我敢打赌这个对象还没有id。我认为id是在创建对象之后出现的。为了创建对象,需要使用默认值。我错过了什么?
res['details'] = **[(6, False, dws)]**