zoukankan      html  css  js  c++  java
  • odoo12常用的方法

    2019-09-13  今天是中秋节,星期五
    #自定义显示名称
    def name_get(self):
        result = []
        for order in self:
            rec_name = "%s(%s)"%(record.name,record.date_done)
            result.append((record.id, rec_name))
        return result
    
    
    # 新添加函数name_search
    @api.model
    def name_search(self, name='', args=None, operator='ilike', limit=100):
        if not args:
            args = []
            products = []
        if name:
            positive_operators = ['=', 'ilike', '=ilike', 'like', '=like']
            products = self.env['product.product']
            if operator in positive_operators:
                products = self.search([('name', 'ilike', name)] + args, limit=limit)
                if not products:
                    products = self.search([('size', 'ilike', name)] + args, limit=limit)
                if not products:
                    products = self.search([('material', 'ilike', name)] + args, limit=limit)
        else:
            products = self.search(args, limit=limit)
        return products.name_get()
    
    
    
    
    
    
    #添加约束
    from odoo.exceptions import ValidationError
    @api.constrains('age')
    def _check_something(self):
        for record in self:
            if record.age > 20:
                raise ValidationError("Your record is too old: %s" % record.age)
    
        # all records passed the test, don't return anything  
    
    #更新时间
    @api.multi
    def change_updatetime(self):
        for order in self:
          order.update_time=fields.Datetime.now()
    
    在SQL语句里或ORM里  记录集要用tuple  不能用list
    search([('id','in',tuple(ids)])
    
    
    调用mapped获取员工名字
    return employee_ids.mapped('name')
    
    #获取用户组:self.user_has_groups('base.group_no_one')
    
    
    看板默认分组当无此类型当值时也默认出现在看板里
    #对于odoo12来说  group_expand=''   对于selection类型
    state = fields.Selection([('a', "A"), ('b', "B"),('c', "C"), ('d', "D")], group_expand='_expand_states')
    
    def _expand_states(self, states, domain, order):
        # return all possible states, in order
        return [key for key, val in type(self).state.selection]
    
    
    
    
    
    
    #对于odoo12来说  group_expand=''   对于many2one类型
    stage_id = fields.Many2one('crm.stage', string='Stage', ondelete='restrict', track_visibility='onchange', index=True,
                               domain="['|', ('team_id', '=', False), ('team_id', '=', team_id)]",
                               group_expand='_read_group_stage_ids', default=lambda self: self._default_stage_id())
    @api.model
    def _read_group_stage_ids(self, stages, domain, order):
        """ Read group customization in order to display all the stages in the
            kanban view, even if they are empty
        """
        stage_ids = stages._search([], order=order, access_rights_uid=SUPERUSER_ID)
        return stages.browse(stage_ids)
    
    
    
    #以超级用户身份创建记录
    rent_as_superuser = self.env['library.book'].sudo()
    
    rent_as_superuser.create(vals)
    
    
    #获取当前用户对于的员工
    
    employee = self.env.user.employee_ids[0]  #对象
    
    employee.id
    
    employee.name




    按钮写法
    @api.multi
    def btn_import_wizard(self):
    context = self._context.copy()
    context.update({'related_field_name': 'order_id','import_model':'sale.order.line'})
    return {
    'type': 'ir.actions.act_window',
    'name': (u'导入'),
    'res_model': 'base.import.line.wizard',
    'view_mode': 'form',
    'target': 'new',
    'context': context
    }

    向导里面的 函数,可以通过按钮里面的context传进来
    @api.multi
    def btm_confirm(self):
    active_id = self._context.get('active_id')
    res_model = self.env[self._context['import_model']]
    related_field_name = self._context['related_field_name']
    
    
    
    
    
     <field name="discount" groups="base.group_no_one" string="Disc (%)"/>
     <field name="invoice_line_tax_ids" widget="many2many_tags" options="{'no_create': True}" context="{'type':parent.type, 'tree_view_ref': 'account.account_tax_view_tree', 'search_view_ref': 'account.account_tax_view_search'}"
             domain="[('type_tax_use','=','sale'),('company_id', '=', parent.company_id)]"/>
     <field name="price_subtotal" string="Subtotal" groups="account.group_show_line_subtotals_tax_excluded"/>



    动作
    <record id="sale_order_line_action" model="ir.actions.act_window">
    <field name="name">search_sale_order_line</field>
    <field name="type">ir.actions.act_window</field>
    <field name="res_model">sale.order.line</field>
    <field name="view_mode">tree,form</field>
    <field name="context">{'tree_view_ref':'sale_order_line_tree'
    'form_view_ref':'sale_order_line_form'}
    </field>
    </record>



    
    
    继承
    <xpath expr="//header" position="inside">
    <button name="btn_7" string="" type="object" class="oe_highlight oe_read_only" />
    </xpath>

    <xpath expr="//header/field[@name='order_id']" position="attributes">
    <attribute name="readonly">1</attribute>
    </xpath>


    查看附件
    <div class="o_attachment_preview" attrs="{'invisible': ['|',('type', '!=', 'in_invoice'),('state', '!=', 'draft')]}" />
    <div class="oe_chatter">
    <field name="message_follower_ids" widget="mail_followers"/>
    <field name="activity_ids" widget="mail_activity"/>
    <field name="message_ids" widget="mail_thread"/>
    </div>




    看板上的进度条:odoo11以上才有
    <progressbar field="activity_state" colors='{"planned": "success", "overdue": "danger", "today": "warning"}'/>



     
     
     
     odoo学习链接
    https://blog.csdn.net/weixin_38495451/article/details/88548613 ---odoo12 视图使用方式(一)
  • 相关阅读:
    HDU 5059 Help him
    HDU 5058 So easy
    HDU 5056 Boring count
    HDU 5055 Bob and math problem
    HDU 5054 Alice and Bob
    HDU 5019 Revenge of GCD
    HDU 5018 Revenge of Fibonacci
    HDU 1556 Color the ball
    CodeForces 702D Road to Post Office
    CodeForces 702C Cellular Network
  • 原文地址:https://www.cnblogs.com/1314520xh/p/11517959.html
Copyright © 2011-2022 走看看