Я довольно новичок в Odoo, и я хотел поиграть с тестовым модулем, для которого я создал несколько представлений (шаблонов) для веб-страниц. Сначала, когда был только один шаблон, все работало нормально, но когда я попытался добавить другой, обновления внезапно перестали работать. Ниже вы найдете код первого и второго шаблона плюс сообщение об ошибке, а также файл моего манифеста
Первый шаблон
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="template_test_hello_world" name="Test Hello World"><!DOCTYPE html>
<html>
<body>
<div id="test_hello_world_page_text">
<p>Url text: <t t-esc="val"/></p>
</div>
<div>
<t t-foreach="models" t-as="model">
<p><t t-esc="model.id"/><t t-esc="model.preview_name"/></p>
</t>
</div>
</body>
</html>
</template>
</odoo>
Второй шаблон
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="template_random" name="Test Random"><!DOCTYPE html>
<html>
<body>
<div id="test_random_div">
<p>BlaBlaBla</p>
</div>
</body>
</html>
</template>
</odoo>
Манифест
{
'name': "Tests",
'summary': """
Testing stuff
""",
'description': """
Yes.
""",
'author': "",
'website': "",
'category': 'Uncategorized',
'version': '0.1',
'depends': [],
'data': [
'views/test_hello_world_template.xml',
'data/test_models.xml',
'security/ir.model.access.csv',
'views/random_template.xml',
],
"installable": True,
}
Сообщение об ошибке
2020-02-07 11:21:47,945 27164 ERROR smthg odoo.sql_db: bad query: b'INSERT INTO "ir_ui_view" ("id", "key", "priority", "active", "type", "name", "mode", "create_uid", "write_uid", "create_date", "write_date") VALUES(nextval(\'ir_ui_view_id_seq\'), \'my_module.template_test_hello_world\', 16, true, \'qweb\', \'Test Hello World\', \'primary\', 1, 1, (now() at time zone \'UTC\'), (now() at time zone \'UTC\')) RETURNING id'
ERROR: null value in column "projection" violates not-null constraint
DETAIL: Failing row contains (2531, 2020-02-07 11:21:47.854173, 1, 2020-02-07 11:21:47.854173, t, null, null, null, Test Hello World, null, 16, primary, null, qweb, 1, null, null, null, null, null, null, my_module.template_test_hello_world, null, null, null, null, null).
2020-02-07 11:21:47,946 27164 WARNING smthg odoo.modules.loading: Transient module states were reset
2020-02-07 11:21:48,044 27164 ERROR smthg odoo.modules.registry: Failed to load registry
Traceback (most recent call last):
File "/etc/odoo/odoo-server/odoo/odoo/tools/convert.py", line 745, in parse
self._tags[rec.tag](rec, de, mode=mode)
File "/etc/odoo/odoo-server/odoo/odoo/tools/convert.py", line 723, in _tag_template
return self._tag_record(record, data_node)
File "/etc/odoo/odoo-server/odoo/odoo/tools/convert.py", line 655, in _tag_record
id = self.env(context=rec_context)['ir.model.data']._update(rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode)
File "/etc/odoo/odoo-server/odoo/odoo/addons/base/ir/ir_model.py", line 1504, in _update
record = record.create(values)
File "/etc/odoo/odoo-server/odoo/odoo/addons/base/ir/ir_ui_view.py", line 408, in create
return super(View, self).create(self._compute_defaults(values))
File "/etc/odoo/odoo-server/odoo/odoo/models.py", line 3409, in create
record = self.browse(self._create(old_vals))
File "/etc/odoo/odoo-server/odoo/odoo/models.py", line 3502, in _create
cr.execute(query, tuple(u[2] for u in updates if len(u) > 2))
File "/etc/odoo/odoo-server/odoo/odoo/sql_db.py", line 155, in wrapper
return f(self, *args, **kwargs)
File "/etc/odoo/odoo-server/odoo/odoo/sql_db.py", line 232, in execute
res = self._obj.execute(query, params)
psycopg2.IntegrityError: null value in column "projection" violates not-null constraint
DETAIL: Failing row contains (2531, 2020-02-07 11:21:47.854173, 1, 2020-02-07 11:21:47.854173, t, null, null, null, Test Hello World, null, 16, primary, null, qweb, 1, null, null, null, null, null, null, my_module.template_test_hello_world, null, null, null, null, null).
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/etc/odoo/odoo-server/odoo/odoo/modules/registry.py", line 85, in new
odoo.modules.load_modules(registry._db, force_demo, status, update_module)
File "/etc/odoo/odoo-server/odoo/odoo/modules/loading.py", line 376, in load_modules
force, status, report, loaded_modules, update_module, models_to_check)
File "/etc/odoo/odoo-server/odoo/odoo/modules/loading.py", line 274, in load_marked_modules
perform_checks=perform_checks, models_to_check=models_to_check
File "/etc/odoo/odoo-server/odoo/odoo/modules/loading.py", line 181, in load_module_graph
_load_data(cr, module_name, idref, mode, kind='data')
File "/etc/odoo/odoo-server/odoo/odoo/modules/loading.py", line 95, in _load_data
tools.convert_file(cr, module_name, filename, idref, mode, noupdate, kind, report)
File "/etc/odoo/odoo-server/odoo/odoo/tools/convert.py", line 792, in convert_file
convert_xml_import(cr, module, fp, idref, mode, noupdate, report)
File "/etc/odoo/odoo-server/odoo/odoo/tools/convert.py", line 853, in convert_xml_import
obj.parse(doc.getroot(), mode=mode)
File "/etc/odoo/odoo-server/odoo/odoo/tools/convert.py", line 752, in parse
exc_info[2]
File "/etc/odoo/odoo-server/odoo/odoo/tools/pycompat.py", line 86, in reraise
raise value.with_traceback(tb)
File "/etc/odoo/odoo-server/odoo/odoo/tools/convert.py", line 745, in parse
self._tags[rec.tag](rec, de, mode=mode)
File "/etc/odoo/odoo-server/odoo/odoo/tools/convert.py", line 723, in _tag_template
return self._tag_record(record, data_node)
File "/etc/odoo/odoo-server/odoo/odoo/tools/convert.py", line 655, in _tag_record
id = self.env(context=rec_context)['ir.model.data']._update(rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode)
File "/etc/odoo/odoo-server/odoo/odoo/addons/base/ir/ir_model.py", line 1504, in _update
record = record.create(values)
File "/etc/odoo/odoo-server/odoo/odoo/addons/base/ir/ir_ui_view.py", line 408, in create
return super(View, self).create(self._compute_defaults(values))
File "/etc/odoo/odoo-server/odoo/odoo/models.py", line 3409, in create
record = self.browse(self._create(old_vals))
File "/etc/odoo/odoo-server/odoo/odoo/models.py", line 3502, in _create
cr.execute(query, tuple(u[2] for u in updates if len(u) > 2))
File "/etc/odoo/odoo-server/odoo/odoo/sql_db.py", line 155, in wrapper
return f(self, *args, **kwargs)
File "/etc/odoo/odoo-server/odoo/odoo/sql_db.py", line 232, in execute
res = self._obj.execute(query, params)
odoo.tools.convert.ParseError: "null value in column "projection" violates not-null constraint
DETAIL: Failing row contains (2531, 2020-02-07 11:21:47.854173, 1, 2020-02-07 11:21:47.854173, t, null, null, null, Test Hello World, null, 16, primary, null, qweb, 1, null, null, null, null, null, null, my_module.template_test_hello_world, null, null, null, null, null).
" while parsing None:4, near
<t name="Test Hello World" t-name="my_module.template_test_hello_world"><!DOCTYPE html>
<html>
<body>
<div id="test_hello_world_page_text">
<p>Url text: <t t-esc="val"/></p>
</div>
<div>
<t t-foreach="models" t-as="model">
<p><t t-esc="model.id"/><t t-esc="model.preview_name"/></p>
</t>
</div>
</body>
</html>
</t>
2020-02-07 11:21:48,048 27164 CRITICAL smthg odoo.service.server: Failed to initialize database `smthg`.
Traceback (most recent call last):
File "/etc/odoo/odoo-server/odoo/odoo/tools/convert.py", line 745, in parse
self._tags[rec.tag](rec, de, mode=mode)
File "/etc/odoo/odoo-server/odoo/odoo/tools/convert.py", line 723, in _tag_template
return self._tag_record(record, data_node)
File "/etc/odoo/odoo-server/odoo/odoo/tools/convert.py", line 655, in _tag_record
id = self.env(context=rec_context)['ir.model.data']._update(rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode)
File "/etc/odoo/odoo-server/odoo/odoo/addons/base/ir/ir_model.py", line 1504, in _update
record = record.create(values)
File "/etc/odoo/odoo-server/odoo/odoo/addons/base/ir/ir_ui_view.py", line 408, in create
return super(View, self).create(self._compute_defaults(values))
File "/etc/odoo/odoo-server/odoo/odoo/models.py", line 3409, in create
record = self.browse(self._create(old_vals))
File "/etc/odoo/odoo-server/odoo/odoo/models.py", line 3502, in _create
cr.execute(query, tuple(u[2] for u in updates if len(u) > 2))
File "/etc/odoo/odoo-server/odoo/odoo/sql_db.py", line 155, in wrapper
return f(self, *args, **kwargs)
File "/etc/odoo/odoo-server/odoo/odoo/sql_db.py", line 232, in execute
res = self._obj.execute(query, params)
psycopg2.IntegrityError: null value in column "projection" violates not-null constraint
DETAIL: Failing row contains (2531, 2020-02-07 11:21:47.854173, 1, 2020-02-07 11:21:47.854173, t, null, null, null, Test Hello World, null, 16, primary, null, qweb, 1, null, null, null, null, null, null, my_module.template_test_hello_world, null, null, null, null, null).
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/etc/odoo/odoo-server/odoo/odoo/service/server.py", line 1006, in preload_registries
registry = Registry.new(dbname, update_module=update_module)
File "/etc/odoo/odoo-server/odoo/odoo/modules/registry.py", line 85, in new
odoo.modules.load_modules(registry._db, force_demo, status, update_module)
File "/etc/odoo/odoo-server/odoo/odoo/modules/loading.py", line 376, in load_modules
force, status, report, loaded_modules, update_module, models_to_check)
File "/etc/odoo/odoo-server/odoo/odoo/modules/loading.py", line 274, in load_marked_modules
perform_checks=perform_checks, models_to_check=models_to_check
File "/etc/odoo/odoo-server/odoo/odoo/modules/loading.py", line 181, in load_module_graph
_load_data(cr, module_name, idref, mode, kind='data')
File "/etc/odoo/odoo-server/odoo/odoo/modules/loading.py", line 95, in _load_data
tools.convert_file(cr, module_name, filename, idref, mode, noupdate, kind, report)
File "/etc/odoo/odoo-server/odoo/odoo/tools/convert.py", line 792, in convert_file
convert_xml_import(cr, module, fp, idref, mode, noupdate, report)
File "/etc/odoo/odoo-server/odoo/odoo/tools/convert.py", line 853, in convert_xml_import
obj.parse(doc.getroot(), mode=mode)
File "/etc/odoo/odoo-server/odoo/odoo/tools/convert.py", line 752, in parse
exc_info[2]
File "/etc/odoo/odoo-server/odoo/odoo/tools/pycompat.py", line 86, in reraise
raise value.with_traceback(tb)
File "/etc/odoo/odoo-server/odoo/odoo/tools/convert.py", line 745, in parse
self._tags[rec.tag](rec, de, mode=mode)
File "/etc/odoo/odoo-server/odoo/odoo/tools/convert.py", line 723, in _tag_template
return self._tag_record(record, data_node)
File "/etc/odoo/odoo-server/odoo/odoo/tools/convert.py", line 655, in _tag_record
id = self.env(context=rec_context)['ir.model.data']._update(rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode)
File "/etc/odoo/odoo-server/odoo/odoo/addons/base/ir/ir_model.py", line 1504, in _update
record = record.create(values)
File "/etc/odoo/odoo-server/odoo/odoo/addons/base/ir/ir_ui_view.py", line 408, in create
return super(View, self).create(self._compute_defaults(values))
File "/etc/odoo/odoo-server/odoo/odoo/models.py", line 3409, in create
record = self.browse(self._create(old_vals))
File "/etc/odoo/odoo-server/odoo/odoo/models.py", line 3502, in _create
cr.execute(query, tuple(u[2] for u in updates if len(u) > 2))
File "/etc/odoo/odoo-server/odoo/odoo/sql_db.py", line 155, in wrapper
return f(self, *args, **kwargs)
File "/etc/odoo/odoo-server/odoo/odoo/sql_db.py", line 232, in execute
res = self._obj.execute(query, params)
odoo.tools.convert.ParseError: "null value in column "projection" violates not-null constraint
DETAIL: Failing row contains (2531, 2020-02-07 11:21:47.854173, 1, 2020-02-07 11:21:47.854173, t, null, null, null, Test Hello World, null, 16, primary, null, qweb, 1, null, null, null, null, null, null, my_module.template_test_hello_world, null, null, null, null, null).
" while parsing None:4, near
<t name="Test Hello World" t-name="my_module.template_test_hello_world"><!DOCTYPE html>
<html>
<body>
<div id="test_hello_world_page_text">
<p>Url text: <t t-esc="val"/></p>
</div>
<div>
<t t-foreach="models" t-as="model">
<p><t t-esc="model.id"/><t t-esc="model.preview_name"/></p>
</t>
</div>
</body>
</html>
</t>
Возможно, самое интересное для меня - это первая строка:
bad query: b'INSERT INTO "ir_ui_view" ("id", "key", "priority", "active", "type", "name", "mode", "create_uid", "write_uid", "create_date", "write_date") VALUES(nextval(\'ir_ui_view_id_seq\'), \'my_module.template_test_hello_world\', 16, true, \'qweb\', \'Test Hello World\', \'primary\', 1, 1, (now() at time zone \'UTC\'), (now() at time zone \'UTC\')) RETURNING id'
ERROR: null value in column "projection" violates not-null constraint
DETAIL: Failing row contains (2531, 2020-02-07 11:21:47.854173, 1, 2020-02-07 11:21:47.854173, t, null, null, null, Test Hello World, null, 16, primary, null, qweb, 1, null, null, null, null, null, null, my_module.template_test_hello_world, null, null, null, null, null).
Но я пока мало что знаю о SQL или Odoo, и я нашел очень мало в Интернете, хотя провел почти целый день в этом также, как вы можете видеть в нижней части ошибки, кажется, что проблема с первым шаблоном, возможно, вам будет полезно узнать, что в какой-то момент это был второй шаблон, который отображался там.
Полагаю, в конце концов мой вопрос: кто-нибудь знает, что происходит и как я могу это решить?