odoo 后台开发(问题)

发布时间 2023-04-10 17:20:46作者: gz_xiaohai

1. Views 视图

  1. button 按钮 属性

     type: 主要使用 action 和 object
     object: 指定name="模型函数"
     action: 指定name="%(record的id)d"
    
     context: 传入上下文参数,如设置context="{'active_id': id}"
     则可以在模型文件使用环境上下文获取传入的值
     active_id = self.env.context.get("active_id", 0)
    
  2. menuitem 菜单属性

     根菜单
     <menuitem id="root_menu"
           name="XX管理" />
    
     子菜单
     <menuitem id="xx_list_menu"
           name="XX设置"
           parent="root_menu"
           action="view_act" />
    

2. Models 模型

  1. 设置模型归档字段

     active = fields.Boolean(string="不归档", default=True)
    
  2. Many2one 在视图列表的展示 附加内容添加

     def name_get(self):
     	result = []
     	for record in self:
     		# 后台访问
     		if "active_id" in self.env.context:
     			prefix = "--" * record.dept_level
     			result.append((record.id, "%s%s 第%s等级" % (prefix, record.name, record.dept_level)))
     		else:
     			# api访问
     			result.append((record.id, record.name))
    
     	return result
    
  3. 上下文环境变量的使用

     @api.model
     def search_read(self, domain=None, fields=None, offset=0, limit=None, order=None):
     	# print("search_read:", self.env.context, domain, fields)
     	active_id = self.env.context.get("active_id", 0)
     	if active_id > 0:
     		domain = [("post_id", "=", active_id)]
    
     	if fields and "member_id" not in fields:
     		fields.append("member_id")
    
     	data = super().search_read(domain=domain,
     		fields=fields,
     		offset=offset,
     		limit=limit,
     		order=order)
     	return data