2017-03-02 130 views
2

這是一個非常奇怪的行爲,它正在工作,現在我正要將我的模塊安裝在另一個數據庫上,並且突然發生了有關外部ID的此錯誤。在系統中找不到外部ID - Odoo v9社區

這是我在型號代碼:

def _static_location(self): 
    return self.env.ref('fleet_stock.location_stock') 

然後,我打電話從外地此功能:

x_location_dest_id = fields.Many2one('stock.location', string=u'Ubicacion Destino de Productos', required=True, 
            readonly=False, default=_static_location, 
            help="Location where the system will look for components.") 

location_stock屬性,是一個XML文件,數據文件夾,聲明如下這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
<data noupdate="1"> 
<record id="location_stock" model="stock.location"> 
    <field name="name">ReparacionUnidades</field> 
    <field name="location_id" ref="stock.stock_location_locations_virtual"/> 
    <field name="usage">production</field> 
    <field name="company_id"></field> 
</record> 
</data> 
</openerp> 

__openerp__.py文件:

"data": [ 
    'data/location_data.xml', 
    'data/fleet_stock_data.xml', 
    'views/fleet_vehicle_log_services.xml', 
], 

當我嘗試安裝它,然後拋出我:

Traceback (most recent call last): 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/http.py", line 648, in _handle_exception 
return super(JsonRequest, self)._handle_exception(exception) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/http.py", line 685, in dispatch 
result = self._call_function(**self.params) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/http.py", line 321, in _call_function 
return checked_call(self.db, *args, **kwargs) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/service/model.py", line 118, in wrapper 
return f(dbname, *args, **kwargs) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/http.py", line 314, in checked_call 
result = self.endpoint(*a, **kw) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/http.py", line 964, in __call__ 
return self.method(*args, **kw) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/http.py", line 514, in response_wrap 
response = f(*args, **kw) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/addons/web/controllers/main.py", line 892, in call_button 
action = self._call_kw(model, method, args, {}) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/addons/web/controllers/main.py", line 880, in _call_kw 
return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/api.py", line 250, in wrapper 
return old_api(self, *args, **kwargs) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/addons/base/module/module.py", line 459, in button_immediate_install 
return self._button_immediate_function(cr, uid, ids, self.button_install, context=context) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/api.py", line 250, in wrapper 
return old_api(self, *args, **kwargs) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/addons/base/module/module.py", line 534, in _button_immediate_function 
registry = openerp.modules.registry.RegistryManager.new(cr.dbname, update_module=True) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/modules/registry.py", line 386, in new 
openerp.modules.load_modules(registry._db, force_demo, status, update_module) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/modules/loading.py", line 338, in load_modules 
loaded_modules, update_module) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/modules/loading.py", line 237, in load_marked_modules 
loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/modules/loading.py", line 137, in load_module_graph 
init_module_models(cr, package.name, models) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/modules/module.py", line 300, in init_module_models 
result = obj._auto_init(cr, {'module': module_name}) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/api.py", line 250, in wrapper 
return old_api(self, *args, **kwargs) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/models.py", line 2643, in _auto_init 
self._set_default_value_on_column(cr, k, context=context) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/api.py", line 250, in wrapper 
return old_api(self, *args, **kwargs) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/models.py", line 2399, in _set_default_value_on_column 
default = default(self, cr, SUPERUSER_ID, context) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/api.py", line 250, in wrapper 
return old_api(self, *args, **kwargs) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/api.py", line 354, in old_api 
result = method(recs, *args, **kwargs) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/fields.py", line 82, in <lambda> 
return api.model(lambda model: field.convert_to_write(value(model))) 
File "/home/kristian/odoov9/danisan/fleet_stock/models/fleet_vehicle_services.py", line 122, in _static_location 
return self.env.ref('fleet_stock.location_stock') 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/api.py", line 792, in ref 
return self['ir.model.data'].xmlid_to_object(xml_id, raise_if_not_found=raise_if_not_found) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/api.py", line 248, in wrapper 
return new_api(self, *args, **kwargs) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/api.py", line 490, in new_api 
result = method(self._model, cr, uid, *args, **old_kwargs) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/addons/base/ir/ir_model.py", line 1019, in xmlid_to_object 
t = self.xmlid_to_res_model_res_id(cr, uid, xmlid, raise_if_not_found) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/api.py", line 250, in wrapper 
return old_api(self, *args, **kwargs) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/addons/base/ir/ir_model.py", line 1005, in xmlid_to_res_model_res_id 
return self.xmlid_lookup(cr, uid, xmlid)[1:3] 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/api.py", line 250, in wrapper 
return old_api(self, *args, **kwargs) 
File "<string>", line 2, in xmlid_lookup 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/tools/cache.py", line 85, in lookup 
value = d[key] = self.method(*args, **kwargs) 
File "/home/kristian/odoov9/odoo-9.0c-20161106/openerp/addons/base/ir/ir_model.py", line 995, in xmlid_lookup 
raise ValueError('External ID not found in the system: %s' % (xmlid)) 
ValueError: External ID not found in the system: fleet_stock.location_stock 

但它是完全荒謬的,這是工作,這是我的模塊,該模塊被稱爲fleet_stock,所以它是什麼?

請問__openerp__.py文件中的data列的順序嗎?

任何想法?

+1

在開發模塊時,首先是什麼:位置(xml)或字段上的默認機制?我真的認爲Odoo嘗試在創建字段之前設置字段創建(數據庫列,填充它)的默認值。但我完全不知道。 – CZoellner

+0

類似的東西,我認爲是的,也不知道,該位置是第一btw – NeoVe

回答

1

可能位置不是從您的xml文件創建的。

您可以通過以下嘗試:

從你的XML文件中刪除NOUPDATE =「1」屬性,然後重新啓動服務器Odoo和升級您的自定義模塊。

之後轉到位置菜單,檢查是否創建ReparacionUnidades。如果創建,那麼我們可能會在xml文件中放回noupdate =「1」屬性。

現在,請檢查您的x_location_dest_id值。它應該給你的願望輸出。

+0

要去嘗試這樣的 – NeoVe

1

如果您確定您的XML ID在文件中,並且XML文件位於__openerp__.py中。那麼問題在於__openerp__.py中XML文件的順序,您需要尊重XML ID順序,您不能引用未在數據庫中保存和保存的ID。

+0

是的,但我已經改變了順序,同樣的錯誤,idk非常奇怪 – NeoVe

+0

什麼是錯誤不要戰慄,審查你的步驟,你會明白爲什麼我可以發佈錯誤 – Cherif

相關問題