如何在现有的odoo模块中添加Chatter



我正试图在fleet的车辆服务日志中添加聊天,当我试图更新负责添加聊天的继承模块时,它会给我这个错误

这是型号:

# -*- coding: utf-8 -*-
from odoo import models, fields, api
class Fleet_Chatter_service(models.Model):
_name = 'fleet.chatter.service'
_inherit = ['fleet.vehicle.log.services', 'mail.thread', 'ir.needaction_mixin']
_description = "fleet chatter in cost and service"

这是观点:

<odoo>
<record model="ir.ui.view" id="odt_fleet_service_chatter_form">
<field name="name">odt.fleet.chatter.service</field>
<field name="model">fleet.chatter.service</field>
<field name="inherit_id" ref="fleet.fleet_vehicle_log_services_view_form"/>
<field name="arch" type="xml">
<xpath expr="//form/sheet" position="after">
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="activity_ids" widget="mail_activity"/>
<field name="message_ids" widget="mail_thread" />
</div>
</xpath>
</field>
</record>
</odoo>

这就是错误:

错误:

Odoo服务器错误

Traceback(最近一次通话):文件"C: \odt_work\zawaj\odoo-13\odoo\addons\base\models\ir_ui_view.py";,第394行,在check_xml中self.postprocess_and_fields(view.model,view_doc,view.id)文件"C: \odt_work\zawaj\odoo-13\odoo\addons\base\models\ir_ui_view.py";,第961行,在postprocess_and_fields中self.raise_view_error(("找不到模型:%(Model)s")%dict(Model=Model),view_id)文件"C: \odt_work\zawaj\odoo-13\odoo\addons\base\models\ir_ui_view.py";,行614,在raise_view_error中引发ValueError(消息)ValueError:找不到模型:fleet.chatter.service

错误上下文:视图odt.fleet.chatter.service[View_id:2990,xml_id:n/a,型号:fleet.chatter.service,parent_id:494]

在处理上述异常的过程中,发生了另一个异常:

Traceback(最近一次通话):文件"C: \odt_work\zawaj\odoo-13\odoo\tools\convert.py";,第712行,在解析中自我_根(de)文件";C: \odt_work\zawaj\odoo-13\odoo\tools\convert.py";,第674行,in_tag_rootf(rec)文件";C: \odt_work\zawaj\odoo-13\odoo\tools\convert.py";,第577行,在_tag_record中record=型号_load_records([data],self.mode=='update')文件";C: \odt_work\zawaj\odoo-13\odoo\models.py";,第4168行,in_加载记录记录=自身_load_records_create([data['values']用于to_create]中的数据)File"C: \odt_work\zawaj\odoo-13\odoo\models.py";,线4082,在_load_records_create中return self.create(values)File"&";,第2行,在创建文件";C: \odt_work\zawaj\odoo-13\odoo\api.py";,第336行,in_model_create_multireturn create(self,arg)File"C: \odt_work\zawaj\odoo-13\odoo\addons\base\models\ir_ui_view.py";,第475行,在创建中return super(View,self).create(vals_list)File";,第2行,在创建文件中"C: \odt_work\zawaj\odoo-13\odoo\api.py";,第336行,in_model_create_multireturn create(self,arg)File"C: \odt_work\zawaj\odoo-13\odoo\models.py";,第3843行,创建中fields[0]。determinate_inverse(batch_recs)File";C: \odt_work\zawaj\odoo-13\odoo\fields.py";,第1155行,in确定_逆getattr(records,self.inverse)()文件"C: \odt_work\zawaj\odoo-13\odoo\addons\base\models\ir_ui_view.py";,第299行,在_inverse_arch中view.write(数据)文件";C: \odt_work\zawaj\odoo-13\odoo\addons\base\models\ir_ui_view.py";,第493行,写入res=super(View,self).write(self.compute_defaults(vals))File";C: \odt_work\zawaj\odoo-13\odoo\models.py";,第3632行,写入real_recs_validate_fields(vals,inverse_fields)文件";C: \odt_work\zawaj\odoo-13\odoo\models.py";,第1206行,in_验证字段check(self)File";C: \odt_work\zawaj\odoo-13\odoo\addons\base\models\ir_ui_view.py";,第396行,在check_xml中引发ValidationError("%s\n\n%s"%(("验证视图时出错"),tools.uster(e)))odoo.exceptions.ValidationError:("验证时出错正在验证视图\n\n找不到模型:fleet.chatter.service\n\n错误上下文:\nViewodt.fleet.chatter.service\n[view_id:2990,xml_id:n/a,型号:fleet.chatter.service,parent_id:494]',无)

在处理上述异常的过程中,发生了另一个异常:

Traceback(最近一次通话):文件"C: \odt_work\zawaj\odoo-13\odoo\http.py";,第624行,在_handle_exceptionreturn super(JsonRequest,self)_handle_exception(exception)文件";C: \odt_work\zawaj\odoo-13\odoo\http.py";,第310行,in_handle_exception提升pycompat.reraise(type(exception),exception,sys.exc_info()[2])文件"C: \odt_work\zawaj\odoo-13\odoo\tools\pycompat.py";,第14行,in加注提升值文件";C: \odt_work\zawaj\odoo-13\odoo\http.py";,669行,发送中结果=自我_call_function(**self.params)文件";C: \odt_work\zawaj\odoo-13\odoo\http.py";,第350行,在_call_function中return checked_call(self.db,*args,**kwargs)文件"C: \odt_work\zawaj\odoo-13\odoo\service\model.py";,第94行,包装中return f(dbname,*args,**kwargs)文件"C: \odt_work\zawaj\odoo-13\odoo\http.py";,第339行,checked_callresult=self.endpoint(*a,**kw)File";C: \odt_work\zawaj\odoo-13\odoo\http.py";,第915行,在调用中返回self.method(*args,**kw)File";C: \odt_work\zawaj\odoo-13\odoo\http.py";,第515行,在response_wrap中响应=f(*args,**kw)文件";c: \odt_work\zawaj\odoo-13\addons\web\controllers\main.py";,线1343,在call_button中行动=自我_call_kw(模型,方法,args,kwargs)文件"c: \odt_work\zawaj\odoo-13\addons\web\controllers\main.py";,线1331,在_call_kwreturn call_kw(request.env[model],method,args,kwargs)File"C: \odt_work\zawaj\odoo-13\odoo\api.py";,387号线,来电_kwresult=_call_kw_multi(方法、模型、args、kwargs)文件"C: \odt_work\zawaj\odoo-13\odoo\api.py";,第374行,在_call_kw_multi中result=方法(recs,*args,**kwargs)文件"&";,第2行,在button_immediate_upgrade文件中"C: \odt_work\zawaj\odoo-13\odoo\addons\base\models\ir_module.py";,线72,在check_and.log中return方法(self,*args,**kwargs)File"C: \odt_work\zawaj\odoo-13\odoo\addons\base\models\ir_module.py";,线634,在button_immediate_upgrade中回归自我_button_immediate_function(type(self).button_pgrade)File;C: \odt_work\zawaj\odoo-13\odoo\addons\base\models\ir_module.py";,第573行,在_button_immediate_function中modules.registry.registry.new(self.cr.dbname,update_module=True)文件"C: \odt_work\zawaj\odoo-13\odoo\modules\registry.py";,第86行,in新odoo.modules.load_modules(registry.db,force_demo,status,update_module)文件"C: \odt_work\zawaj\odoo-13\odoo\modules\loading.py";,419行,在加载模块force、status、report、loaded_modules、update_module、models_to_check)文件"C: \odt_work\zawaj\odoo-13\odoo\modules\loading.py";,第315行,inload_marked_modulesperform_checks=perform_checks,models_to_check=models_to_check文件"C: \odt_work\zawaj\odoo-13\odoo\modules\loading.py";,第225行,in加载模块图load_data(cr,idref,mode,kind='data',package=package,report=report)文件"C: \odt_work\zawaj\odoo-13\odoo\modules\loading.py";,第68行,in加载数据tools.convert_file(cr,package.name,filename,idref,mode,noupdate,kind,report)文件"C: \odt_work\zawaj\odoo-13\odoo\tools\convert.py";,第736行,在convert_fileconvert_xml_import(cr,module,fp,idref,mode,noupdate,report)文件"C: \odt_work\zawaj\odoo-13\odoo\tools\convert.py";,第803行,在convert_xml_importobj.parse(doc.getroot())文件"C: \odt_work\zawaj\odoo-13\odoo\tools\convert.py";,第721行,解析中exc_info[2]文件";C: \odt_work\zawaj\odoo-13\odoo\tools\pycompat.py";,第13行,in加注raise-value.with_traceback(tb)文件"C: \odt_work\zawaj\odoo-13\odoo\tools\convert.py";,第712行,在解析中自我_根(de)文件";C: \odt_work\zawaj\odoo-13\odoo\tools\convert.py";,第674行,in_tag_rootf(rec)文件";C: \odt_work\zawaj\odoo-13\odoo\tools\convert.py";,第577行,在_tag_record中record=型号_load_records([data],self.mode=='update')文件";C: \odt_work\zawaj\odoo-13\odoo\models.py";,第4168行,in_加载记录记录=自身_load_records_create([data['values']用于to_create]中的数据)File"C: \odt_work\zawaj\odoo-13\odoo\models.py";,线4082,在_load_records_create中return self.create(values)File"&";,第2行,在创建文件";C: \odt_work\zawaj\odoo-13\odoo\api.py";,第336行,in_model_create_multireturn create(self,arg)File"C: \odt_work\zawaj\odoo-13\odoo\addons\base\models\ir_ui_view.py";,第475行,在创建中return super(View,self).create(vals_list)File";,第2行,在创建文件中"C: \odt_work\zawaj\odoo-13\odoo\api.py";,第336行,in_model_create_multireturn create(self,arg)File"C: \odt_work\zawaj\odoo-13\odoo\models.py";,第3843行,创建中fields[0]。determinate_inverse(batch_recs)File";C: \odt_work\zawaj\odoo-13\odoo\fields.py";,第1155行,in确定_逆getattr(records,self.inverse)()文件"C: \odt_work\zawaj\odoo-13\odoo\addons\base\models\ir_ui_view.py";,第299行,在_inverse_arch中view.write(数据)文件";C: \odt_work\zawaj\odoo-13\odoo\addons\base\models\ir_ui_view.py";,第493行,写入res=super(View,self).write(self.compute_defaults(vals))File";C: \odt_work\zawaj\odoo-13\odoo\models.py";,第3632行,写入real_recs_validate_fields(vals,inverse_fields)文件";C: \odt_work\zawaj\odoo-13\odoo\models.py";,第1206行,in_验证字段check(self)File";C: \odt_work\zawaj\odoo-13\odoo\addons\base\models\ir_ui_view.py";,第396行,在check_xml中raise ValidationError("%s\n\n%s"%(("验证视图时出错"),tools.uster(e))odoo.tools.covert.ParseError:";在时出错验证视图

找不到型号:fleet.chatter.service

Error context:
View `odt.fleet.chatter.service`
[view_id: 2990, xml_id: n/a, model: fleet.chatter.service, parent_id: 494]
None" while parsing file:/c:/odt_work/zawaj/zawaj_custom/odt_fleet_chatter/views/chatter_service_view.xml:1, near
<odoo>
<record model="ir.ui.view" id="odt_fleet_service_chatter_form">
<field name="name">odt.fleet.chatter.service</field>
<field name="model">fleet.chatter.service</field>
<field name="priority" eval="50"/>
<field name="inherit_id" ref="fleet.fleet_vehicle_log_services_view_form"/>
<field name="arch" type="xml">
<xpath expr="//form/sheet" position="after">
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/>
<field name="activity_ids" widget="mail_activity"/>
<field name="message_ids" widget="mail_thread"/>
</div>
</xpath>
</field>
</record>
</odoo> 

尝试继承"mail.activity.mixin";以及因为它是添加了";activity_ids";在视图中使用的字段。

# -*- coding: utf-8 -*-
from odoo import models, fields, api
class Fleet_Chatter_service(models.Model):
_name = 'fleet.chatter.service'
_inherit = [
'fleet.vehicle.log.services', 'mail.thread',
'mail.activity.mixin', 'ir.needaction_mixin'
]
_description = "fleet chatter in cost and service"

继承"mail.thread";在你班上:

class Fleet_Chatter_service(models.Model):
_name = 'fleet.chatter.service'
_inherit = ['mail.thread', 'another.module.needed']

现在,您必须在视图中添加聊天内容:如果是自定义视图,请将其放在:之后

<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</div>

如果您正在处理继承的视图,请使用此Xpath:

<xpath expr="//form/sheet" position="after">
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</div>
</xpath>

问候,