odoo 关系字段(关联关系)

Many-to-one关联

publisher_id = fields.Many2one(comodel_name= ‘res.partner‘, domain=‘‘,context={},ondelete=‘‘,auto_join=‘‘,delegate=‘‘,string=‘Publisher‘)

many-to-one模型字段在数据表中创建一个字段,并带有指向关联表的外键,其中为关联记录的数据库 ID。以下是many-to-one字段可用的关键字参数:

  • ondelete定义关联记录删除时执行的操作:context是一个数据字典,可在浏览关联时为网页客户端传递信息,比如设置默认值。

    • set null (默认值): 关联字段删除时会置为空值
    • restricted:抛出错误阻止删除
    • cascade:在关联记录删除时同时删除当前记录
  • domain是一个域表达式:使用一个元组列表过滤记录来作为关联记录选项。
  • auto_join=True允许ORM在使用关联进行搜索时使用SQL连接。使用时会跳过访问安全规则,用户可以访问安全规则不允许其访问的关联记录,但这样 SQL 的查询会更有效率且更快。
  • delegate=True 创建一个关联记录的代理继承。使用时必须设置required=True和ondelete=’cascade’

One-to-many反向关联

published_book_ids = fields.One2many(

  comodel_name= ‘library.book‘, # related model

inverse_name= ‘publisher_id‘, # fields for "this" on related model

domain=‘‘,

context={},

auto_join=‘‘,

limit=0,

string=‘Published Books‘)

Many-to-many关联

author_ids = fields.Many2many(

comodel_name=‘res.partner‘, # 关联模型(必填)

relation=‘library_book_res_partner_rel‘, # 关联表名

column1=‘a_id‘, # 本记录关联表字段

column2=‘p_id‘, # 关联记录关联表字段

string=‘Authors‘) # string标签文本

  

    

class Many2many(_RelationalMulti):
""" Many2many field; the value of such a field is the recordset.

:param comodel_name: name of the target model (string)

The attribute ``comodel_name`` is mandatory except in the case of related
fields or field extensions.

:param relation: optional name of the table that stores the relation in
the database (string)

:param column1: optional name of the column referring to "these" records
in the table ``relation`` (string)

:param column2: optional name of the column referring to "those" records
in the table ``relation`` (string)

The attributes ``relation``, ``column1`` and ``column2`` are optional. If not
given, names are automatically generated from model names, provided
``model_name`` and ``comodel_name`` are different!

:param domain: an optional domain to set on candidate values on the
client side (domain or string)

:param context: an optional context to use on the client side when
handling that field (dictionary)

:param limit: optional limit to use upon read (integer)

"""

在创建抽象模型时,many-to-many中不要使用column1和column2属性。在 ORM 设计中对抽象模型有一个限制,如果指定关联表列名,就无法再被正常继承。

原文地址:https://www.cnblogs.com/fly-kaka/p/11018779.html

时间: 2024-10-05 05:04:57

odoo 关系字段(关联关系)的相关文章

(原创)odoo关系字段在视图中的行为控制 总结

字段类型 选项或属性 格式 描述 many2one no_create options='{"no_create":True}' 控制创建功能   no_open options='{"no_open":True}' 在视图只读状态下,控制点击打开功能   no_create_edit options='{"no_create_edit":True}' 控制创建并编辑功能 x2many  create create="True"

odoo Model字段的参数

odoo Model字段的参数 class Field(object): """ The field descriptor contains the field definition, and manages accesses and assignments of the corresponding field on records. The following attributes may be provided when instanciating a field: :p

odoo 计算字段和默认值

计算字段 如下 import random from odoo import models, fields ? class ComputedModel(models.Model): _name = 'test.computed' ? name = fields.Char(compute='_compute_name') ? @api.multi def _compute_name(self): for record in self: record.name = str(random.randin

CRM 2016 子表单中N:1关系 字段要求与新建时的关系

父表单在新建子表单项时弹出的窗口和 子表单的N:1关系是有关系的.说白了就是子表单窗体上的父表单字段是不是必填项. 关系如下: 1 非必填项 点击子表单的"+"号时,会出现lookup查找框,可以选择现有项.如果新建,还需要再点击下面的"+新建"按钮. 2 必填项, 点击子表单的"+"号时,会直接出现新建的页面. 总结:相当于CRM2011 的 添加现有项 和 新建的意思.

odoo 某个字段权限设置

<field name="qty_done" groups="stock.group_stock_manager" attrs="{'readonly': [('location_id', '=', 8)]}"/> <button name="split_lot" string="Lot Split" type="object" icon="fa-list&q

关联关系、依赖关系总结

一.关联关系总结: 1.对象和对象之间的连接.在Java中,关联关系的代码表现形式为一个类做为另一个类的属性类型存在.即"有"的关系:"has-a". 2.关联关系的方向:关联关系分为单向关联和双向关联 ①单向关联: A类关联B类. ②双向关联:A类关联B类,B类关联A类. 3.关联关系的多重性:①一对一关联:一个学生,只能在一个班级里学习. ②一对多关联:一个学生,可以参加多个班级学习. ③解决一对多的关联的方案:集合和数组. 集合 例: public class

django关系类型字段

一.多对一(ForeignKey) 多对一的关系,通常被称为外键.外键字段类的定义如下: class ForeignKey(to, on_delete, **options)[source] 外键需要两个位置参数,一个是关联的模型,另一个是on_delete选项.实际上,在目前版本中,on_delete选项也可以不设置,但Django极力反对如此,因此在Django2.0版本后,该选项会设置为必填. 外键要定义在‘多’的一方! from django.db import models class

Django Admin Cookbook-22如何将一对一关系添加为Admin内联字段

22.如何将一对一关系添加为Admin内联字段? 可以像Foreign Key外联字段一样,将OneToOneFields一对一关系字段设置为内联.但是,只能将包含OneToOneField一对一关系的模型一侧设置为内联模型. 我们有一个这样的HeroAcquaintance模型,它与Hero模型具有一对一的关系: class HeroAcquaintance(models.Model): "Non family contacts of a Hero" hero = models.On

Hibernate的七种映射关系之七种关联映射(一)

关联映射就是将关联关系映射到数据库里,在对象模型中就是一个或多个引用. 一.Hibernate多对一关联映射:就是在"多"的一端加外键,指向"一"的一端. 比如多个学生对应一个班级,多个用户对应一个级别等等,都是多对一关系. 1."多"端实体加入引用"一"端实体的变量及getter,setter方法. 比如说多个学生对应一个班级,在学生实体类加入:private Grade grade; 2."多"端配置文