我创建了一个与文本类有很多关系的网站类。我正在尝试为many2many关系类添加一些属性。 这是网站类:
class site(models.Model):
_name ='ab.site'
name = fields.Char('Name')
text_ids = fields.Many2many('ab.site.text',
'ab_site_text_rel',
'text_id',
'site_id',
'Texts')
这是文本类:
class text(models.Model):
_name = 'ab.text'
name = fields.Char('Title', required=True)
我需要在文本类和网站类上同时创建不合格,用户可以根据法律文本在网站中添加不合格列表,因此不合格类是与这两者相关,这就是我试图将它添加到关系类的原因。 我创建了关系类,我添加了适用性字段(boolean)和one2many字段(不符合):
class ab_site_text_rel(models.Model):
_name = "ab.site.text.rel"
_rec_name = "site_id"
site_id = fields.Many2one('ab.site', 'Site', ondelete='cascade')
text_id = fields.Many2one('ab.site.text', 'Text', ondelete='cascade')
applicability = fields.Boolean(string='Applicability')
nonconformity_ids = fields.One2many('ab.nonconformity','ab_site_text_rel','Non-conformities')
运行服务器时出现此错误:
File "/home/euromed/git/odoo9/openerp/modules/registry.py", line 200, in setup_models
model._setup_fields(cr, SUPERUSER_ID, partial)
File "/home/euromed/git/odoo9/openerp/api.py", line 250, in wrapper
return old_api(self, *args, **kwargs)
File "/home/euromed/git/odoo9/openerp/api.py", line 354, in old_api
result = method(recs, *args, **kwargs)
File "/home/euromed/git/odoo9/openerp/models.py", line 3046, in _setup_fields
field.setup_full(self)
File "/home/euromed/git/odoo9/openerp/fields.py", line 495, in setup_full
self._setup_regular_full(model)
File "/home/euromed/git/odoo9/openerp/fields.py", line 1893, in _setup_regular_full
invf = comodel._fields[self.inverse_name]
KeyError: 'ab_site_text_rel'
答案 0 :(得分:2)
关系字段:
关系字段是具有引用其他对象的值的字段。关系可以是单向或双向的。
一般来说,主要有三种类型的关系。
<强> 1。 Many2one 强>
与其他对象的正常关系(使用外键)
发票行包含发票的引用(invoice_id)
invoice_id = fields.Many2one(comodel_name='account.invoice', string='Invoice')
<强> 2。 One2many 强>
invoice_line = fields.One2many(comodel_name='account.invoice.line', inverse_name='invoice_id', string='Invoice Line')
第3。 Many2many 强>
对象之间的双向多重关系。
这是最常见的一种关系:记录可能与另一方的任意数量的记录有关,反之亦然。
在多对多关系的情况下,Products中的每一行都链接到Taxes中的零行,一行或多行,反之亦然。通常,New Table需要一个映射表来映射这种关系。
Many2many字段定义。
taxes_id = fields.Many2many(comodel_name='account.tax', relation='product_taxes_rel', column1='prod_id', column2='tax_id', string='Customer Taxes')
=============================================== =========================
实际上,在这个框架中,我们不需要关心M2M的关系表,它将被自动管理。所以在你的情况下,它不是必需的。而且我不确定你为什么要创建这个课程,特定于你的要求。并尝试使用您想要实现的目标更新问题。
类ab_site_text_rel(models.Model):
这不是必需的。