Python 为什么单击按钮打开时插入命令
我正在学习模块。它有一个按钮,其名称为creates,如下面的代码所示Python 为什么单击按钮打开时插入命令,python,openerp-7,Python,Openerp 7,我正在学习模块。它有一个按钮,其名称为creates,如下面的代码所示 <button name="creates" string="Create" type="object" groups="base.group_erp_manager" /> def creates(self,cr,uid,ids,context=None): for id in ids: deg_obj=self.pool.get('deg.form').browse(cr,uid,i
<button name="creates" string="Create" type="object" groups="base.group_erp_manager" />
def creates(self,cr,uid,ids,context=None):
for id in ids:
deg_obj=self.pool.get('deg.form').browse(cr,uid,id)
pr=int(deg_obj.categg_temp)
ctx=dict(context)
ctx.update({'default_pr':pr})
return{
'view_type': 'form',
'view_mode': 'form',
'res_model': 'product.product',
'context': ctx,
'type': 'ir.actions.act_window',
'target': 'current',
}
在我的服务器日志中
2014-12-31 08:18:40,566 7407 ERROR new_db openerp.sql_db: bad query: insert into "product_template" (id,"supply_method","list_price","standard_price","mes_type","uom_id","cost_method","categ_id","uos_coeff","sale_delay","procure_method","sale_ok","company_id","produce_delay","uom_po_id","rental","type",create_uid,create_date,write_uid,write_date) values (639,'buy','1.00','0.00','fixed',1,'standard','9','1.000',7.0,'make_to_stock','True',1,1.0,1,'False','consu',1,(now() at time zone 'UTC'),1,(now() at time zone 'UTC'))
Traceback (most recent call last):
File "/opt/openerp/server/openerp/sql_db.py", line 226, in execute
res = self._obj.execute(query, params)
IntegrityError: null value in column "name" violates not-null constraint
DETAIL: Failing row contains (639, 1, 2014-12-31 08:18:40.463017, 2014-12-31 08:18:40.463017, 1, null, null, 1.00, null, null, null, 0.00, fixed, 1, null, standard, 9, null, 1.000, null, t, null, null, 1, null, 1, 1, f, consu, null, null, 7, null, buy, make_to_stock).
2014-12-31 08:18:40,569 7407 ERROR new_db openerp.netsvc: Integrity Error
The operation cannot be completed, probably due to the following:
- deletion: you may be trying to delete a record while other records still reference it
- creation/update: a mandatory field is not correctly set
[object with reference: name - name]
Traceback (most recent call last):
File "/opt/openerp/server/openerp/netsvc.py", line 296, in dispatch_rpc
result = ExportService.getService(service_name).dispatch(method, params)
File "/opt/openerp/server/openerp/service/web_services.py", line 626, in dispatch
res = fn(db, uid, *params)
File "/opt/openerp/server/openerp/osv/osv.py", line 190, in execute_kw
return self.execute(db, uid, obj, method, *args, **kw or {})
File "/opt/openerp/server/openerp/osv/osv.py", line 174, in wrapper
netsvc.abort_response(1, _('Integrity Error'), 'warning', msg)
File "/opt/openerp/server/openerp/netsvc.py", line 71, in abort_response
raise openerp.osv.osv.except_osv(description, details)
except_osv: ('Integrity Error', 'The operation cannot be completed, probably due to the following:\n- deletion: you may be trying to delete a record while other records still reference it\n- creation/update: a mandatory field is not correctly set\n\n[object with reference: name - name]')
我的第一个问题是。为什么我在使用sql insert命令时出现错误,尽管与creates
方法没有类似的insert。它只会打开一个窗体,我会在其中按下save按钮或其他东西来保存值。
其次,我如何绕过这个问题,进入下一步,在那个里我可以创建一个项目
注意:我也有编辑、查看方法和按钮,它们只是在查看和编辑模式下打开值。但他们也有同样的问题
编辑
有一件事我必须提一提。我有打印“\n\n内部创建方法”
在creater方法中。它从未显示在我的服务器控制台/终端上
EDIT1
deg_形式
有`\u inherit='product.product'我很确定你的类中的这个\u inherit='product.product'
正在破坏这些东西
您的原始表单(不是您尝试使用按钮打开的表单)在执行按钮操作之前尝试保存对象。由于此表单处理的模型继承了“product.product”,因此您的表单尝试在“product\u product”(以及分别在“product\u template”)表中执行相同的操作。我认为您的表单没有提供足够的字段来满足所需的“产品模板”字段
你确定你需要遗产吗?我觉得你不需要它
建议:尝试使用PDB代替代码中的print():
import pdb; pdb.set_trace()
它非常强大,对OpenERP有很大帮助。您尝试过更改方法的名称吗?哪个视图包含您的“创建”按钮?@PhucTran我将方法的名称从creates更改为creater。同样的问题。@AndreiBoyanov我有一个模块名系统,它有
deg_形式
class。Creates方法是deg_形式的
类deg_form
视图已创建按钮尝试删除循环的并从deg_obj=self.pool.get('deg.form')。浏览(cr,uid,id)
更改为deg_obj=self.browse(cr,uid,ids)
。我不知道它是否有效如果你已经解决了这个问题,你能把它写在这里吗?你是如何解决的?谢谢
import pdb; pdb.set_trace()