zoukankan      html  css  js  c++  java
  • Odoo Documentation : Environment

    Environment

    The Environment stores various contextual data(上下文数据 ) used by the ORM: the database cursor (for database queries), the current user (for access rights checking) and the current context (storing arbitrary metadata). The environment also stores caches.

    All recordsets have an environment, which is immutable(不可改变的), can be accessed using env and gives access to the current user (user), the cursor (cr) or the context (context):

    >>> records.env
    <Environment object ...>
    >>> records.env.user
    res.user(3)
    >>> records.env.cr
    <Cursor object ...)

    When creating a recordset from an other recordset, the environment is inherited. The environment can be used to get an empty recordset in an other model, and query that model:

    >>> self.env['res.partner']
    res.partner
    >>> self.env['res.partner'].search([['is_company', '=', True], ['customer', '=', True]])
    res.partner(7, 18, 12, 14, 17, 19, 8, 31, 26, 16, 13, 20, 30, 22, 29, 15, 23, 28, 74)

    Altering the environment

    The environment can be customized from a recordset. This returns a new version of the recordset using the altered environment.

    sudo()

    creates a new environment with the provided user set, uses the administrator if none is provided (to bypass access rights/rules in safe contexts), returns a copy of the recordset it is called on using the new environment:

    # create partner object as administrator
    env['res.partner'].sudo().create({'name': "A Partner"})
    
    # list partners visible by the "public" user
    public = env.ref('base.public_user')
    env['res.partner'].sudo(public).search([])
    with_context()
    1. can take a single positional parameter, which replaces the current environment's context
    2. can take any number of parameters by keyword, which are added to either the current environment's context or the context set during step 1
    # look for partner, or create one with specified timezone if none is
    # found
    env['res.partner'].with_context(tz=a_tz).find_or_create(email_address)
    with_env()
    replaces the existing environment entirely
  • 相关阅读:
    攻防世界-进阶-1-re4-unvm-me
    攻防世界-reverse-7(game)
    攻防世界-reverse-4.5.6
    20199312 2019-2020-2 《网络攻防实践》第6周作业
    攻防世界-reverse-1.2.3
    pwndbg+kali 爬坑
    第五课 实践验收
    20199315 2019-2020-2 《网络攻防实践》第5周作业
    实践三 网络嗅探与协议分析
    20199315 2019-2020-2 《网络攻防实践》第4周作业
  • 原文地址:https://www.cnblogs.com/dancesir/p/7026018.html
Copyright © 2011-2022 走看看