Odoo Python模型-如何访问相关模型

我试图理解Odoo的模型-我很了解Django,但是在理解Odoo时遇到了困难,主要是因为文档通常太糟糕了。

假设我有一些这样的模型:

class Publisher(models.model):
    name = fields.Char('Name',help='Publisher name')
    ...

class Book(model.model):
    publisher = fields.Many2one('whatever.publisher',string='Publisher')

现在假设我有一个Book对象“ mybook”。如何获得发布者对象?仅仅是mybook.publisher吗?

在Django中,我也可以定义一个反向关系(使用“ related_name”),以便Publisher.books.all()会给我所有反向关系,即出版社的所有书籍。 Odoo中的等效物是什么?还是在Odoo中,除了从Book到Publisher的Many2one之外,我还必须明确声明从Publisher到Book的One2many关系?

在Odoo中,您似乎还可以定义一个One2many关系:

class Publisher(models.model):
    published_books = fields.One2many('whatever.book','author',string='Published books')

因此,如果我有一个出版商对象“ publisher”,那么我如何获得该出版商的已出版书籍清单?仅仅是Publisher.published_books?

最后我们有字段。Many2many

class Store(models.model):
    book_ids = fields.Many2many('whatever.book',string='Books')

在这种情况下,一家商店出售许多书籍,而一本书可以在许多商店中使用。

那我怎么在商店里买书呢?如何获得给定书的所有商店?

同样,如果我想要book.stores和store.books,这是否意味着我必须声明一个字段。Book和Store模型中的Many2many关系?

我非常震惊,这在Odoo文档中很难找到。

fengws_sd 回答:Odoo Python模型-如何访问相关模型

是的,您必须在两个模型上添加from __future__ import unicode_literals 字段:

Many2many

对于特定的商店记录,您可以使用以下方法获取所有图书:

class Store(models.model):
    book_ids = fields.Many2many(comodel_name='whatever.book',string='Books',column1='book_id',column2='store_id')

class Book(models.model):
    store_ids = fields.Many2many(comodel_name='whatever.store',string='Stores',column2='book_id',column1='store_id')

对于特定的书籍记录,您可以使用以下方法获得所有商店:

store.book_ids
本文链接:https://www.f2er.com/3169494.html

大家都在问