0

sayと関係のsuperclassあるを作りたいです。そのため、 を継承するすべての意志が と関係を持つようになります。問題は、リレーションを宣言すると、 にリンクする外部キーを指定する必要があることです。したがって、作成するすべての関係(外部キー)を作成する必要があります。one2manydummy.onesubclasssuperclassone2manydummy.oneone2manydummy.onesuperclassmany2onedummy.onesubclass

機能する唯一のトリックは、 のmany2many代わりにリレーションを作成することですone2many

次に例を示します。

'dummies'      : fields.one2many('dummy.one','foreign_key','Dummies'),

メニーツーメニー:

'dummies'      : fields.many2many('dummy.one',string='Dummies'),

for everyでフィールドmany2manyを宣言する必要がないのと同じ効果を達成するためのより良い方法はありますか?many2onedummy.onesubclass

4

3 に答える 3

2

Python 継承を使用する代わりに、委任による継承である Odoo の ORM 継承を使用することをお勧めします。次の例を参照してください。

class book(models.Model):
    _name = 'books.book'
    name = fields.Char()
    author = fields.Many2one('books.author')

class author(models.Model):
    _name = 'books.author'
    name = fields.Char()
    books = fields.One2many('books.book', 'author')

class better_author(models.Model):
    _name = 'books.author'
    _inherit = 'books.author'
    curriculum = fields.Text()
于 2015-09-18T06:01:57.993 に答える
1

dummy.oneすべてのサブクラスではなく、スーパークラスに対してmany2one リレーション (外部キー) を作成してみてください。

于 2015-04-30T14:56:23.550 に答える