首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Odoo python模型-如何访问相关模型

Odoo python模型-如何访问相关模型
EN

Stack Overflow用户
提问于 2019-11-04 01:36:07
回答 1查看 275关注 0票数 0

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

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

代码语言:javascript
代码运行次数:0
运行
复制
class Publisher(models.model):
    name = fields.Char('Name',help='Publisher name')
    ...

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

现在假设我有一个Book对象"mybook“。如何获得Publisher对象?只是mybook.publisher吗?

在Django中,我还可以定义一个反向关系(使用"related_name"),这样publisher.books.all()就可以为我提供所有反向关系,即出版商的所有书籍。什么是在Odoo的等价物?还是在Odoo中,除了从One2many到Publisher的Many2one之外,我还必须显式地声明一个从Publisher到Book的Many2one关系?

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

代码语言:javascript
代码运行次数:0
运行
复制
class Publisher(models.model):
    published_books = fields.One2many('whatever.book','author',string='Published books')

那么,如果我有一个publisher对象“publisher”,那么如何获得发行者已出版书籍的列表?只是publisher.published_books吗?

最后我们有了fields.Many2many

代码语言:javascript
代码运行次数:0
运行
复制
class Store(models.model):
    book_ids = fields.Many2many('whatever.book',string='Books')

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

那我怎么才能在店里买到这些书呢?我怎样才能买到一本书的所有商店?

另外,如果我想要book.stores和store.books,这是否意味着我必须在Book和Store模型中声明一个fields.Many2many关系?

我很惊讶这在Odoo文档中很难找到。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-04 06:00:23

是的,您必须在两个模型上添加Many2many字段:

代码语言:javascript
代码运行次数:0
运行
复制
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')

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

代码语言:javascript
代码运行次数:0
运行
复制
store.book_ids

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

代码语言:javascript
代码运行次数:0
运行
复制
book.store_ids
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58686202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档