Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么单击按钮打开时插入命令_Python_Openerp 7 - Fatal编程技术网

Python 为什么单击按钮打开时插入命令

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

我正在学习模块。它有一个按钮,其名称为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,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()