TypeError: create() takes exactly 2 arguments (5 given) - Odoo v8 wizard
TypeError: create() takes exactly 2 arguments (5 given) - Odoo v8 wizard
我已经创建了一个带步骤的向导,这是我的 xml:
<record id="view_wizard_prod_order_form" model="ir.ui.view">
<field name="name">bsi.production.order.wizard</field>
<field name="model">bsi.production.order</field>
<field name="arch" type="xml">
<form string="Production Order">
<field name="state" widget="statusbar" statusbar_visible="step1,step2,step3,step4" statusbar_colors='{"step3":"blue","step4":"blue"}' clickable="True" />
<group>
<group>
<field name="date_production" attrs="{'invisible': [('state', '!=', 'step1')]}" />
<field name="product_id" attrs="{'invisible': [('state', '!=', 'step1')]}" />
<field name="qty_available" attrs="{'invisible': [('state', '!=', 'step1')]}" />
<field name="isbn1" attrs="{'invisible': [('type_prod', '!=', 'direct')]}" />
<field name="isbn2" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
<field name="isbn3" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
<field name="isbn4" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
<field name="isbn5" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
<field name="isbn6" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
</group>
<group>
<field name="type_prod" attrs="{'invisible': [('state', '!=', 'step1')]}"/>
<field name="print_order2" attrs="{'invisible': [('type_prod', '!=', 'direct')]}" />
<field name="print_order2" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
<field name="print_order2" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
<field name="print_order2" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
<field name="print_order2" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
<field name="print_order2" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
</group>
</group>
<group>
<group string="Book Block" attrs="{'invisible': [('state', '!=', 'step2')]}">
<field name="name_block" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="category" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="language" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="edition" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="size" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="book_block_textp" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="n_pages_one_color" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="two_color" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="four_color" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="total" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="text_print_code" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="book_block_adpaper" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="adnl_n_pages_one_color" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="adnl_two_color" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="adnl_third_color" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="adnl_four_color" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="adnl_total" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="adnl_text_print_code" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="book_block_txtep" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="n_of_end_pages" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
</group>
<group string="Book Size" attrs="{'invisible': [('state', '!=', 'step2')]}">
<field name="name_size" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="description_size" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="forme_size" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="plate_size" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
</group>
</group>
<group>
<group string="Book Edition" attrs="{'invisible': [('state', '!=', 'step3')]}">
<field name="name_edition" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
</group>
<group string="Book Binding" attrs="{'invisible': [('state', '!=', 'step3')]}">
<field name="name_binding" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
</group>
<group string="Cut Off" attrs="{'invisible': [('state', '!=', 'step3')]}">
<field name="name_cut" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="description_cut" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="cutoff_size" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
</group>
<group string="Paper Master" attrs="{'invisible': [('state', '!=', 'step3')]}">
<field name="name_papermaster" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="description_papermaster" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="paper_type" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="uom_papermaster" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="gsm_papermaster" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="std_cost_rate" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="qty_in_kgs" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="size_width" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="size_height" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
</group>
</group>
<group>
<group string="End Paper" attrs="{'invisible': [('state', '!=', 'step4')]}">
<field name="name_end_paper" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
<field name="category_end_paper" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
<field name="size_end_paper" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
</group>
<group string="Printing Code" attrs="{'invisible': [('state', '!=', 'step4')]}">
<field name="description_code" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
<field name="size_code" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
</group>
<group string="Book Edge" attrs="{'invisible': [('state', '!=', 'step4')]}">
<field name="name_book_edge" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
</group>
<group string="Job Rate" attrs="{'invisible': [('state', '!=', 'step4')]}">
<field name="name_jobrate" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
<field name="binding" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
<field name="size_binding_job_rate" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
<field name="bind_variety" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
<field name="rates" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
<field name="addl_rate" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
<field name="uptoforme" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
</group>
</group>
</form>
<footer>
<button string="Save" name="save_data" type="object" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
</footer>
</field>
</record>
这是按钮的方法 save_data
:
@api.multi
def save_data(self):
imd = self.env['ir.model.data']
self.name = name
return (bsi_production_order, self).create(self)
我只是添加一个字段,例如,无论需要什么字段,它总是会抛出:
Traceback (most recent call last):
File "C:\Program Files\Odoo 8.0-20170809\server\.\openerp\http.py", line 546, in _handle_exception
File "C:\Program Files\Odoo 8.0-20170809\server\.\openerp\http.py", line 583, in dispatch
File "C:\Program Files\Odoo 8.0-20170809\server\.\openerp\http.py", line 319, in _call_function
File "C:\Program Files\Odoo 8.0-20170809\server\.\openerp\service\model.py", line 118, in wrapper
File "C:\Program Files\Odoo 8.0-20170809\server\.\openerp\http.py", line 316, in checked_call
File "C:\Program Files\Odoo 8.0-20170809\server\.\openerp\http.py", line 812, in __call__
File "C:\Program Files\Odoo 8.0-20170809\server\.\openerp\http.py", line 412, in response_wrap
File "C:\Program Files\Odoo 8.0-20170809\server\openerp\addons\web\controllers\main.py", line 944, in call_kw
File "C:\Program Files\Odoo 8.0-20170809\server\openerp\addons\web\controllers\main.py", line 936, in _call_kw
TypeError: create() takes exactly 2 arguments (5 given)
我尝试了很多方法,查看了不同的例子,但没有成功,有什么想法吗?
编辑
我也试过这样的:
@api.multi
def save_data(self, vals):
vals = {
'name' : name,
}
return (bsi_production_order, self).create(vals)
同样的错误...我真的坚持这个
create 方法接收一个字典作为参数,你应该以这种方式调用 self.create(vals)
如果你已经在你想要创建的模型中,如果你是不,你应该用 super 调用创建方法,像这样 super(class_name, self).create(vals)
,vals 这是字典。
编辑:
create方法的定义是:
def create(self, vals):
你可以在这个 link 中看到,当你调用这个方法时(即 super(class_name, self).create(vals)
) self 是隐式的,就像 passed 'self' 这就是为什么你得到错误 TypeError: create() 恰好需要 2 个参数(给定 5 个) 因为自身包含:cr、uid、ids ...
希望这个小小的解释能帮到你。
不要像那样调用创建使用这个。
self.env['your.model.name'].create(vals)
例如,如果您重写 odoo 10 中的创建方法。
@api.model
def create(self, values) :
# your code here
我已经创建了一个带步骤的向导,这是我的 xml:
<record id="view_wizard_prod_order_form" model="ir.ui.view">
<field name="name">bsi.production.order.wizard</field>
<field name="model">bsi.production.order</field>
<field name="arch" type="xml">
<form string="Production Order">
<field name="state" widget="statusbar" statusbar_visible="step1,step2,step3,step4" statusbar_colors='{"step3":"blue","step4":"blue"}' clickable="True" />
<group>
<group>
<field name="date_production" attrs="{'invisible': [('state', '!=', 'step1')]}" />
<field name="product_id" attrs="{'invisible': [('state', '!=', 'step1')]}" />
<field name="qty_available" attrs="{'invisible': [('state', '!=', 'step1')]}" />
<field name="isbn1" attrs="{'invisible': [('type_prod', '!=', 'direct')]}" />
<field name="isbn2" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
<field name="isbn3" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
<field name="isbn4" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
<field name="isbn5" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
<field name="isbn6" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
</group>
<group>
<field name="type_prod" attrs="{'invisible': [('state', '!=', 'step1')]}"/>
<field name="print_order2" attrs="{'invisible': [('type_prod', '!=', 'direct')]}" />
<field name="print_order2" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
<field name="print_order2" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
<field name="print_order2" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
<field name="print_order2" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
<field name="print_order2" attrs="{'invisible': [('type_prod', '!=', 'direct')]}"/>
</group>
</group>
<group>
<group string="Book Block" attrs="{'invisible': [('state', '!=', 'step2')]}">
<field name="name_block" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="category" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="language" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="edition" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="size" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="book_block_textp" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="n_pages_one_color" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="two_color" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="four_color" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="total" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="text_print_code" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="book_block_adpaper" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="adnl_n_pages_one_color" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="adnl_two_color" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="adnl_third_color" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="adnl_four_color" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="adnl_total" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="adnl_text_print_code" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="book_block_txtep" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="n_of_end_pages" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
</group>
<group string="Book Size" attrs="{'invisible': [('state', '!=', 'step2')]}">
<field name="name_size" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="description_size" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="forme_size" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
<field name="plate_size" attrs="{'invisible': [('state', '!=', 'step2')]}"/>
</group>
</group>
<group>
<group string="Book Edition" attrs="{'invisible': [('state', '!=', 'step3')]}">
<field name="name_edition" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
</group>
<group string="Book Binding" attrs="{'invisible': [('state', '!=', 'step3')]}">
<field name="name_binding" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
</group>
<group string="Cut Off" attrs="{'invisible': [('state', '!=', 'step3')]}">
<field name="name_cut" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="description_cut" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="cutoff_size" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
</group>
<group string="Paper Master" attrs="{'invisible': [('state', '!=', 'step3')]}">
<field name="name_papermaster" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="description_papermaster" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="paper_type" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="uom_papermaster" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="gsm_papermaster" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="std_cost_rate" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="qty_in_kgs" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="size_width" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
<field name="size_height" attrs="{'invisible': [('state', '!=', 'step3')]}"/>
</group>
</group>
<group>
<group string="End Paper" attrs="{'invisible': [('state', '!=', 'step4')]}">
<field name="name_end_paper" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
<field name="category_end_paper" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
<field name="size_end_paper" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
</group>
<group string="Printing Code" attrs="{'invisible': [('state', '!=', 'step4')]}">
<field name="description_code" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
<field name="size_code" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
</group>
<group string="Book Edge" attrs="{'invisible': [('state', '!=', 'step4')]}">
<field name="name_book_edge" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
</group>
<group string="Job Rate" attrs="{'invisible': [('state', '!=', 'step4')]}">
<field name="name_jobrate" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
<field name="binding" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
<field name="size_binding_job_rate" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
<field name="bind_variety" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
<field name="rates" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
<field name="addl_rate" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
<field name="uptoforme" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
</group>
</group>
</form>
<footer>
<button string="Save" name="save_data" type="object" attrs="{'invisible': [('state', '!=', 'step4')]}"/>
</footer>
</field>
</record>
这是按钮的方法 save_data
:
@api.multi
def save_data(self):
imd = self.env['ir.model.data']
self.name = name
return (bsi_production_order, self).create(self)
我只是添加一个字段,例如,无论需要什么字段,它总是会抛出:
Traceback (most recent call last):
File "C:\Program Files\Odoo 8.0-20170809\server\.\openerp\http.py", line 546, in _handle_exception
File "C:\Program Files\Odoo 8.0-20170809\server\.\openerp\http.py", line 583, in dispatch
File "C:\Program Files\Odoo 8.0-20170809\server\.\openerp\http.py", line 319, in _call_function
File "C:\Program Files\Odoo 8.0-20170809\server\.\openerp\service\model.py", line 118, in wrapper
File "C:\Program Files\Odoo 8.0-20170809\server\.\openerp\http.py", line 316, in checked_call
File "C:\Program Files\Odoo 8.0-20170809\server\.\openerp\http.py", line 812, in __call__
File "C:\Program Files\Odoo 8.0-20170809\server\.\openerp\http.py", line 412, in response_wrap
File "C:\Program Files\Odoo 8.0-20170809\server\openerp\addons\web\controllers\main.py", line 944, in call_kw
File "C:\Program Files\Odoo 8.0-20170809\server\openerp\addons\web\controllers\main.py", line 936, in _call_kw
TypeError: create() takes exactly 2 arguments (5 given)
我尝试了很多方法,查看了不同的例子,但没有成功,有什么想法吗?
编辑
我也试过这样的:
@api.multi
def save_data(self, vals):
vals = {
'name' : name,
}
return (bsi_production_order, self).create(vals)
同样的错误...我真的坚持这个
create 方法接收一个字典作为参数,你应该以这种方式调用 self.create(vals)
如果你已经在你想要创建的模型中,如果你是不,你应该用 super 调用创建方法,像这样 super(class_name, self).create(vals)
,vals 这是字典。
编辑:
create方法的定义是:
def create(self, vals):
你可以在这个 link 中看到,当你调用这个方法时(即 super(class_name, self).create(vals)
) self 是隐式的,就像 passed 'self' 这就是为什么你得到错误 TypeError: create() 恰好需要 2 个参数(给定 5 个) 因为自身包含:cr、uid、ids ...
希望这个小小的解释能帮到你。
不要像那样调用创建使用这个。
self.env['your.model.name'].create(vals)
例如,如果您重写 odoo 10 中的创建方法。
@api.model
def create(self, values) :
# your code here