💭场景:指定创建人张三在表单A中创建一条数据
入坑点:在value中传递create_uid的方式没有成功,create_uid并不是张三。
def create_purchase_quote(self, item):
value_list = []
goods_information_list = []
for good_line in item.goods_information_ids:
good_value = {
'serial_number': good_line.serial_number,
'gzy_material_id': good_line.gzy_material_id.id,
...
}
goods_information_list.append((0, 0, good_value))
for line in item.enquiry_supplier_ids:
value = {'create_uid': line.张三user_id,
'purchase_enquiry_id': item.id,
...
}
if goods_information_list:
value.update(goods_information_ids = goods_information_list)
value_list.append(value)
self.env['purchase.quote'].create(value_list)
解决方法:使用 with_user() 方法
def create_purchase_quote(self, item):
goods_information_list = []
for good_line in item.goods_information_ids:
good_value = {
'serial_number': good_line.serial_number,
'gzy_material_id': good_line.gzy_material_id.id,
...
}
goods_information_list.append((0, 0, good_value))
for line in item.enquiry_supplier_ids:
value = {'create_uid': line.张三user_id,
'purchase_enquiry_id': item.id,
...
}
if goods_information_list:
value.update(goods_information_ids = goods_information_list)
self.env['purchase.quote'].with_user(line.张三user_id).create(value)
内置方法:with_user
with_user(用户id) 返回附加到给定用户的此记录集的新版本,非超级用户模式,除非`user`是超级用户,超级用户始终处于超级用户模式。
源码如下
def with_user(self, user): """ with_user(user) Return a new version of this recordset attached to the given user, in non-superuser mode, unless `user` is the superuser (by convention, the superuser is always in superuser mode.) """ if not user: return self return self.with_env(self.env(user=user, su=False))