odoo16--接口controller编写小白教程--03

使用ORM操作odoo数据库中的信息

目标:为猫猫选择一个或多个性格标签

定义介绍:在Odoo框架中,ORM是指“数据访问层”,其作用是将数据库与Python对象之间转换。它允许开发人员使用Python代码操作数据库而无需关心具体数据库的细节。ORM不仅简化了数据库操作,还提供了丰富的查询API,使开发人员可以更轻松地执行复杂的查询。

步骤1:新增一个model数据表记录性格标签,并关联对应关系
  • 在model中新建一个性格模块py文件
from odoo import models,fields,api

class Personality(models.Model):
    _name = "personality"
    _description = 'cats personality'

    name = fields.Char(string='猫咪性格')

	#_sql_constraints属性包含了一个元组类型的列表,其中包含三个项:约束名称、SQL语句和错误消息。
	#在这种情况下,SQL约束是unique(name),这意味着“name ”字段必须是唯一的。
	#如果有重复,就会显示错误消息:“数据表中已有该性格!”
    _sql_constraints = [
        ('unique_personality_name', 'unique(name)', '数据表中已有该性格!'),
    ]
  • 在security文件夹下的ir.model.access.csv文件中添加此model的权限
access_personality,personality.personality,model_personality,base.group_user,1,1,1,1
  • 一个猫猫对可以有多种性格,而一种性格也可以对应多个猫猫,因此猫猫与性格的对应关系为:多对多。我们在存储猫猫信息的数据模块文件中写入关联关系:
#第一个参数'personality'为性格数据表的模块名
personality_id = fields.Many2many('personality',string='猫咪性格')
  • 在view文件夹中找到猫猫信息的视图,并为form视图加入猫猫性格字段
#widget是odoo的小部件,这里为我们提供了一个更美观的展示,可以在网上搜索更多的部件展示
<field name="personality_id" widget='many2many_tags'></field>
  • 重启并在odoo社区进行模块升级,在为猫猫添加性格标签时,如有重名则报错
    在这里插入图片描述在这里插入图片描述

我们在猫猫性格这一栏目中填入两个同名性格则会提示错误信息

步骤2:模拟前端在postman获取性格表中的所有信息
  • 首先我们设定需求:用户点击猫猫性格选择框,弹出所有猫猫性格标签的选项,用户点击选项进行多选或单选:
    在这里插入图片描述在这里插入图片描述
  • 我们首先实现第一步:用户点击猫猫性格框,出现所有性格选项
    # 查看猫咪性格表
    @http.route('/getCatPersonality', type='json', auth="none", cors="*", csrf=False)
    def getCatPersonality(self, **kw):
        personality_obj = request.env['personality'].sudo()
        personality_id = personality_obj.search([])
        result=[]
        for personality in personality_id:
            result.append({
                "name":personality.name,
                "id":personality.id
                })
        return {
            "code":1,
            "result":result
        }

在这里插入图片描述

  • 这里返回给前端的参数有:性格标签名name、性格标签id
步骤3:根据用户所选的性格标签写入某一只猫猫的信息表中
  • 前端可以拿到用户选择的性格标签id,以列表的形式传给我们,我们根据前端传来的id调出对应的性格标签写入某一只猫猫信息
    # 选择性格
    '''
    uid           猫猫id
    personality_id      性格标签id[传入一个列表形式]
    '''
    @http.route('/writePersonalSkill', type='json', auth='none', cors='*', csrf=False)
    def writePersonalSkill(self, **kw):
        cat_obj = request.env['my.cats'].sudo()
        cat_id = cat_obj.search([('id','=',int(kw['uid']))])
        if not cat_id:
            return{
            'code':1,
            'result':"该猫猫不存在"
            }
        personality = cat_id.write({
        	#清除当前引用的记录来将它们替换为ID列表中包含的记录
        	#False表示是否要同时创建相关记录
        	#将传入的id列表作为新的记录进行存放
            'personality_id':[(6,False,kw['personality_id'])]
        })
        return{
            'code':1,
            'result':personality
        }

在这里插入图片描述

  • 我们将获取到的所有性格标签选择其中两个:id为5 6的性格,写入测试猫猫中,将此时猫猫性格中的“高冷”,“能吃” 变成 “傻”,“能吃”

在这里插入图片描述在这里插入图片描述

  • 在postman中模拟前端用户进行选择并改写某一猫猫的性格标签

在这里插入图片描述在这里插入图片描述刷新odoo社区,可以看到猫猫的性格已经改写为“傻”,“能吃”

  • 如果在性格表中并未找到适合的性格标签,则可以为用户创建一个新建接口
    #新增猫猫的性格
    '''
    name  猫咪性格
    '''
    @http.route('/createCatPersonality', type='json', auth="none", cors="*", csrf=False)
    def createCatPersonality(self, **kw):
        personality_obj = request.env['personality'].sudo()
        personality_id = personality_obj.search([])
        id_list=[]
        for personality in personality_id:
            id_list.append({
                "name":personality.name
                })
        if str(kw['name']) in id_list:
            return{
                'code':1,
                'result':'性格表中已有此性格,请进行选择'
            }
        else:
            personalitys = personality_obj.create({
                'name':kw.get('name')
            })
            return{
                'code':1,
                'personality_id':personalitys.id,
                'result':'已创建该性格'
            }

在这里插入图片描述

  • 本篇中完成了针对多对多关系的数据调用,多对一与一对多的关系可以直接使用基本的增删改查
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Odoo仓库模块是一个功能强大的库存管理工具,它可以帮助企业轻松管理仓库的进货、库存、订单和发货等业务流程。下面是一个简单的Odoo仓库模块教程,帮助你了解如何使用和配置该模块。 首先,你需要在Odoo系统中安装仓库模块。安装完成后,你可以进入仓库模块,在菜单中选择“配置”来设置仓库的基本信息,包括仓库的名称、地址、联系人等。 接下来,你需要设置仓库的存储位置。在“配置”中选择“存储位置”,然后创建不同的存储位置,例如原材料区、成品区、暂存区等,以便更好地组织和管理库存。 然后,你可以设置仓库的物流规则。在“配置”中选择“物流规则”,然后创建不同的规则,例如补货规则、库内移动规则、采购规则等,以便系统能够根据这些规则自动执行相应的操作。 接着,你可以开始进行库存的管理。在仓库模块的“操作”中选择“库存调整”,然后可以进行库存的盘点、调整和转移等操作,确保库存数据的准确性和及时性。 最后,你可以在仓库模块的“运营”中选择“交付订单”,然后可以处理客户订单的发货、退货等操作,确保客户订单的准确交付。 通过这个简单的Odoo仓库模块教程,相信你可以更好地了解如何使用和配置该模块,提高企业的库存管理效率和准确性。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值