J'ai essayé de faire un module dans Odoo 12 mais continuez à me donner un champ d'erreur n'existe pas, mais j'ai déjà défini le champ à l'intérieur du modèle
Déjà vérifié et changé quelques codes plusieurs fois mais toujours pas de chance
model.py
Odoo Server Error Traceback (most recent call last): File "C:\Program Files (x86)\Odoo 12.0\server\odoo\models.py", line 1100, in _validate_fields check(self) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\addons\base\models\ir_ui_view.py", line 344, in _check_xml self.postprocess_and_fields(view.model, view_doc, view.id) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\addons\base\models\ir_ui_view.py", line 1085, in postprocess_and_fields self.raise_view_error(message, view_id) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\addons\base\models\ir_ui_view.py", line 538, in raise_view_error raise ValueError(message) ValueError: Field `publisher_id` does not exist Error context: View `buku.tree` [view_id: 531, xml_id: n/a, model: product.product, parent_id: n/a] During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Program Files (x86)\Odoo 12.0\server\odoo\tools\convert.py", line 748, in parse self._tags[rec.tag](rec, de, mode=mode) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\tools\convert.py", line 653, in _tag_record record = model.with_context(rec_context)._load_records([data], self.mode == 'update') File "C:\Program Files (x86)\Odoo 12.0\server\odoo\models.py", line 3795, in _load_records records = self.create([data['values'] for data in to_create]) File "<decorator-gen-32>", line 2, in create File "C:\Program Files (x86)\Odoo 12.0\server\odoo\api.py", line 452, in _model_create_multi return create(self, arg) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\addons\base\models\ir_ui_view.py", line 418, in create return super(View, self).create(vals_list) File "<decorator-gen-3>", line 2, in create File "C:\Program Files (x86)\Odoo 12.0\server\odoo\api.py", line 452, in _model_create_multi return create(self, arg) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\models.py", line 3540, in create fields[0].determine_inverse(batch_recs) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\fields.py", line 1104, in determine_inverse getattr(records, self.inverse)() File "C:\Program Files (x86)\Odoo 12.0\server\odoo\addons\base\models\ir_ui_view.py", line 268, in _inverse_arch view.write(data) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\addons\base\models\ir_ui_view.py", line 434, in write return super(View, self).write(self._compute_defaults(vals)) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\models.py", line 3257, in write self._write(store_vals) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\models.py", line 3401, in _write self._validate_fields(vals) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\models.py", line 1104, in _validate_fields raise ValidationError("%s\n\n%s" % (_("Error while validating constraint"), tools.ustr(e))) odoo.exceptions.ValidationError: ('Error while validating constraint\n\nField `publisher_id` does not exist\n\nError context:\nView `buku.tree`\n[view_id: 531, xml_id: n/a, model: product.product, parent_id: n/a]', None) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 653, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 312, in _handle_exception raise pycompat.reraise(type(exception), exception, sys.exc_info()[2]) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\tools\pycompat.py", line 87, in reraise raise value File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 695, in dispatch result = self._call_function(**self.params) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 344, in _call_function return checked_call(self.db, *args, **kwargs) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\service\model.py", line 97, in wrapper return f(dbname, *args, **kwargs) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 337, in checked_call result = self.endpoint(*a, **kw) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 938, in __call__ return self.method(*args, **kw) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\http.py", line 517, in response_wrap response = f(*args, **kw) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\addons\web\controllers\main.py", line 966, in call_button action = self._call_kw(model, method, args, {}) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\addons\web\controllers\main.py", line 954, in _call_kw return call_kw(request.env[model], method, args, kwargs) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\api.py", line 749, in call_kw return _call_kw_multi(method, model, args, kwargs) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\api.py", line 736, in _call_kw_multi result = method(recs, *args, **kwargs) File "<decorator-gen-61>", line 2, in button_immediate_install File "C:\Program Files (x86)\Odoo 12.0\server\odoo\addons\base\models\ir_module.py", line 71, in check_and_log return method(self, *args, **kwargs) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\addons\base\models\ir_module.py", line 442, in button_immediate_install return self._button_immediate_function(type(self).button_install) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\addons\base\models\ir_module.py", line 535, in _button_immediate_function modules.registry.Registry.new(self._cr.dbname, update_module=True) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\modules\registry.py", line 86, in new odoo.modules.load_modules(registry._db, force_demo, status, update_module) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\modules\loading.py", line 426, in load_modules loaded_modules, update_module, models_to_check) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\modules\loading.py", line 318, in load_marked_modules perform_checks=perform_checks, models_to_check=models_to_check File "C:\Program Files (x86)\Odoo 12.0\server\odoo\modules\loading.py", line 224, in load_module_graph load_data(cr, idref, mode, kind='data', package=package, report=report) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\modules\loading.py", line 68, in load_data tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind, report) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\tools\convert.py", line 792, in convert_file convert_xml_import(cr, module, fp, idref, mode, noupdate, report) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\tools\convert.py", line 853, in convert_xml_import obj.parse(doc.getroot(), mode=mode) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\tools\convert.py", line 745, in parse self.parse(rec, mode) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\tools\convert.py", line 754, in parse exc_info[2] File "C:\Program Files (x86)\Odoo 12.0\server\odoo\tools\pycompat.py", line 86, in reraise raise value.with_traceback(tb) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\tools\convert.py", line 748, in parse self._tags[rec.tag](rec, de, mode=mode) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\tools\convert.py", line 653, in _tag_record record = model.with_context(rec_context)._load_records([data], self.mode == 'update') File "C:\Program Files (x86)\Odoo 12.0\server\odoo\models.py", line 3795, in _load_records records = self.create([data['values'] for data in to_create]) File "<decorator-gen-32>", line 2, in create File "C:\Program Files (x86)\Odoo 12.0\server\odoo\api.py", line 452, in _model_create_multi return create(self, arg) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\addons\base\models\ir_ui_view.py", line 418, in create return super(View, self).create(vals_list) File "<decorator-gen-3>", line 2, in create File "C:\Program Files (x86)\Odoo 12.0\server\odoo\api.py", line 452, in _model_create_multi return create(self, arg) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\models.py", line 3540, in create fields[0].determine_inverse(batch_recs) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\fields.py", line 1104, in determine_inverse getattr(records, self.inverse)() File "C:\Program Files (x86)\Odoo 12.0\server\odoo\addons\base\models\ir_ui_view.py", line 268, in _inverse_arch view.write(data) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\addons\base\models\ir_ui_view.py", line 434, in write return super(View, self).write(self._compute_defaults(vals)) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\models.py", line 3257, in write self._write(store_vals) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\models.py", line 3401, in _write self._validate_fields(vals) File "C:\Program Files (x86)\Odoo 12.0\server\odoo\models.py", line 1104, in _validate_fields raise ValidationError("%s\n\n%s" % (_("Error while validating constraint"), tools.ustr(e))) odoo.tools.convert.ParseError: "Error while validating constraint Field `publisher_id` does not exist Error context: View `buku.tree` [view_id: 531, xml_id: n/a, model: product.product, parent_id: n/a] None" while parsing file:/c:/program%20files%20(x86)/odoo%2012.0/server/odoo/addons/aa_library/views/views.xml:18, near <record model="ir.ui.view" id="buku_tree_view"> <field name="name">buku.tree</field> <field name="model">product.product</field> <field name="arch" type="xml"> <tree string="Buku"> <field name="default_code"/> <field name="name"/> <field name="publisher_id"/> <field name="author_id"/> <field name="location_id"/> <field name="categ_id"/> <field name="state"/> </tree> </field> </record>
view.xml:
<record model="ir.ui.view" id="buku_tree_view"> <field name="name">buku.tree</field> <field name="model">product.product</field> <field name="arch" type="xml"> <tree string="Buku"> <field name="default_code"/> <field name="name"/> <field name="publisher_id"/> <field name="author_id"/> <field name="location_id"/> <field name="categ_id"/> <field name="state"/> </tree> </field> </record>
Je continue à recevoir "Field publisher_id
n'existe pas "mais comme vous pouvez le voir, je le définis déjà dans model.py
Message d'erreur:
class ProductProduct(models.Model): _inherit = 'product.product' isbn = fields.Char('ISBN Code', unique=True, help="Shows International Standard Book Number") catalog_num = fields.Char('Catalog Number', help="Shows Identification Number of Books") lang = fields.Selection(string='Language', selection='_get_lang') author_id = fields.Many2one('res.partner','Author',domain=[('penulis','=',True)]) publisher_id = fields.Many2one('res.partner','Publisher',domain=[('penerbit','=',True)]) nbpage = fields.Integer('Number of Pages') location_id = fields.Many2one('stock.location', 'Location', help="Shows position of book", domain=[('lokasi buku','=',True)]) num_edition = fields.Integer('No. Edition', help="Edition number of book") resensi = fields.Text('Resensi') state = fields.Selection([('available','Available'),('rent','Rented')],'State',readonly=True, default='available') _sql_constraints = [ ('unique_barcode','unique(barcode)', 'barcode field must be unique across all the products'), ('code_uniq', 'unique (default_code', 'Code of the product must be unique!') ] @api.model def _get_lang(self): return self.env['res.lang'].get_installed()
Tout le monde sait qu'est-ce qui ne va pas avec mon code?
3 Réponses :
Si vous avez ajouté le champ dans le modèle (fichier .py) et la vue en même temps, vous obtiendrez cette erreur. Essayez de commenter le champ dans la vue et après avoir exécuté à nouveau, vous pouvez le décommenter dans la vue.
Merci, je l'ai corrigé en installant le module d'inventaire avant l'installation de mon module
Votre code est parfaitement correct, le problème peut être dû au fait que vous n'avez pas ajouté le fichier model.py dans le fichier init .py. donc
Merci, je l'ai corrigé en installant le module d'inventaire avant l'installation de mon module
J'ai trouvé que je devais installer le module "Inventaire" avant que mon module ne soit installé. Merci à tous.
Avez-vous ajouté ce model.py dans le fichier init.py?
@AvaniSomaiya bonne question, car le reste du code semble correct.
@AvaniSomaiya Je l'ai fait, j'ai trouvé que je devais d'abord installer le module d'inventaire avant d'installer mon module
@CZoellner Je l'ai fait monsieur, j'ai trouvé que je devais installer le module d'inventaire avant que mon module ne soit installé
Bien, si possible, essayez de répondre à votre question. Le stock de module doit en effet être dans la liste des dépendances dans le fichier manifeste de votre module, car vous référencez / utilisez le modèle
stock.location
.