odoo 模型与ORM】的更多相关文章

型号属性 在/模型添加activity.py文件 class ActivityEvent(models.Model): _name = 'activity.event' _inherit = 'event.event' _rec_name = 'test_field' # 字段 test_field = fields.Char(string="字段名称") # 多对多的关联表 employee_ids = fields.Many2many('files.employee', 'acti…
前言 上一篇文章(创建你的第一个应用模块(module))已经大致描述了odoo的模型层(model)和视图层(view),这一篇文章,我们将系统地介绍有关于model的知识,其中包括: 1.模型的类型:Model.TransientModel.AbstractModel 2.模型的属性:_name,_description,_table,_order等 3.模型的字段类型:Char.Boolean.Selection.Binary.Integer.Float.Date.Datetime.Htm…
昨日内容回顾 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 QueryDict {} request.method 请求方式 "GET" "POST" request.is_ajax() 是否是Ajax请求 request.get_full_path() 包含请求数据的路径 return HttpResponse("响应体字符…
没整理完 昨日回顾: 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 QueryDict {} request.method 请求方式 "GET" "POST" request.is_ajax() 是否是Ajax请求 request.get_full_path() 包含请求数据的路径 return HttpResponse("响…
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826214.html 一:增 1:create():返回新创建的记录对象 self.create({'name': "New Name"}) 二:查 1:search() :返回数据集 接收domain表达式参数,返回符合条件的数据集,可以通过limit,offset参数限定查询条数,还可通过order参数根据某字段值对数据集排序. self.search([('is_company', '=…
-----------------更新时间11:17 2016-09-18 星期日11:00 2016-03-13 星期日09:10 2016-03-03 星期四11:46 2016-02-25 星期四10:06 2016-02-24 星期三14:51 2016-02-23 星期二18:07 2016-02-19 星期五17:44 2016-02-17 星期三-----------------*模型  模型是业务对象的呈现  * 系统已定义的模型查看  设置->技术->数据结构->模型 …
1.基础文件及目录结构 在认识odoo ORM框架前,先介绍一下odoo中模块目录结构.     data:存放模块预制数据 i18n:存放国际化文件 models:存放模型等py代码 security:存放权限文件 views:存放视图文件 __manifest__.py:该文件用于声明该模块,并指定一些模块元数据.(odoo8时该文件为__openerp__.py.) # -*- coding: utf-8 -*- { # name:模块名称 'name': " test", #…
ORM方法简介 OpenERP的关键组件, ORM是一个完整的对象关系映射层,是开发人员不必编写基本的SQL管道. 业务对象被声明继承字models.Models的python类. 这让业务对象在ORM层中神奇的持久化. 例子中的self.search方法,下面我们就来具体介绍一下orm的几种基本方法: 1. browse(ids) 作用:获取指定记录的对象. 参数:记录值的ids, 返回值:对象列表. browse方法应用的更多,因为v7版本的search等方法的返回值是ids,而v8版本中的…
在odoo中有两种模型的继承机制(传统方式和委托继承方式) 重点:在__manifest__.py中找到depends,加上要继承的模块 'depends': ['account'] 注意继承的模型所在addon需要在本addon里添加依赖,不然会报一个TypeError: Model 'xxx' does not exist in registry 错误. 传统方式 能够添加字段 改写字段定义 添加约束 添加或改写方法共有两种写法 1 类继承 2 原型继承 类继承 _name = 'event…
单表操作-增.删.改.查 ret=models.User.objects.filter(id=1)  #这里的结果是一个queryset对象 ret=modles.User.Objects.filter(ud=1).first()   #这里查询的结果是一个User对象,User就是表 新增记录 第一种方式通过对象来插入 urls.py from django.conf.urls import urlfrom django.contrib import adminfrom app01 impor…
一.概论 1.ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中. ORM在业务逻辑层和数据库层之间充当了桥梁的作用. 2.ORM由来 让我们从O/R开始.字母O起源于"对象"(Object),而R则来自于"关系"(Relational). 几乎所有的软件开发过程…
Django Django的ORM简介 数据库连接配置 模型的创建与映射 数据库的增删改查 增数据 查数据及补充 改数据 删数据   Django的ORM系统分析 ORM概念:对象关系映射(Object Relational Mapping,简称ORM) ORM的优势:不用直接编写SQL代码,只需像操作对象一样从数据库操作数据. Django的模型映射关系 模型类必须都写在app下的models.py文件中. 模型如果需要映射到数据库,所在的app必须被安装. 一个数据表对应一个模型类,表中的字…
目录 一.模型层(models) 1-1. 常用的字段类型 1-2. 字段参数 1-3. 自定义char字段 1-4. 外键关系 二.Django中测试脚本的使用 三.单表操作 3-1. 添加记录 3-2. 删除记录 3-3. 修改记录 3-4. 单表查询-必知必会13条 3-5. orm注意事项 3-6. 单表查询-双下划线 四.多表操作 4-1. 一对多 4-2. 多对多 1.添加数据 add() 2.删除数据 remove() 3.清空数据 clear() 4.修改数据 set() 4-3…
目录 昨日回顾 模型层 1.配置测试脚本 1.1 应用下tests文件 1.2 新建任意名称文件 2. 数据的增删改查 2.1 创建数据 2.2 修改数据 2.3 删除数据 2.4查询数据 十三门徒 2.5 神奇的双下划线方法 3. 多表查询 1.表的创建与表关系的建立 2.一对多字段数据的增删改查 2.1 增 create() 2.2 改 update() 2.3 删 delete() 3.多对多字段的增删改查 3.1 增 add() 3.2 改 set(可迭代对象) 3.3 删 remove…
一.ORM操作 1.关键性字段及参数 DateField 年月日 DateTimeField 年月日时分秒 auto_now: 每次操作改数据都会自动更新时间 auto_now_add: 新增数据的时候会将当前时间自动添加,后续的修改该字段不会自动更新 2.单独的py文件测试ORM操作需要配置的参数 在Python脚本中调用Django环境 3.django终端打印sql语句配置的参数 # 如果你想知道你对数据库进行操作时,Django内部到底是怎么执行它的sql语句时可以加下面的配置来查看 #…
一.模型概述 https://docs.djangoproject.com/zh-hans/3.0/intro/tutorial02/ https://www.runoob.com/django/django-model.html Django 对各种数据库提供了很好的支持,包括:PostgreSQL.MySQL.SQLite.Oracle. Django 为这些数据库提供了统一的调用API. 我们可以根据自己业务需求选择不同的数据库. MySQL 是 Web 应用中最常用的数据库.本章节我们将…
一. 铺垫 1. 连接Django自带数据库sqlite3 之前提到过Django自带一个叫做sqlite3的小型数据库,当我们做本地测试时,可以直接在sqlite3上测试.不过该数据库是小型的,在有些细节可能体验不大好,比如用ORM用双下划线查询语法时,使用__contains和__icontains的结果是一样的,因为sqlite3无论怎么样都不区分大小写,而且它还会自动把日期格式的字段转为时间戳(该体验贼差). 不过除此之外还好,目前也没发现其他问题,做一些数据的小测试还是绰绰有余的. 1…
一.Django终端打印SQL语句 如果你想知道你对数据库进行操作时,Django内部到底是怎么执行它的sql语句时可以加下面的配置来查看 在Django项目的settings.py文件中,在最后复制粘贴如下代码: LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBUG', 'class':'logging.StreamHandler', }, },…
*模型代码  addons/stock/stock.py  ----------------   #移库单执行移库动作(弹出详细框)    @api.cr_uid_ids_context    def do_enter_transfer_details(self, cr, uid, picking, context=None):        pass...        #开启确认框操作(调用)        return self.pool['stock.transfer_details']…
数据库表的对应关系 1.一对一   #关联字段写在那张表都可以 PS:只要写OneToOneField就会自动加一个id 2.一对多  #关系确立,关联字段写在多的一方 3.多对多   #多对多的关系需要创建第三张表 PS:创建多对多的时候,ORM会自动创建第三张表,这张就是中间表 PS:自动 创建的第三章表命名规则就是app_表名_表名 创建表的对应关系 '''图书管理系统的数据库''' class Author(models.Model): '''作家的姓名和年龄''' # 表的主键可以不写…
1.orm简介 2. models.py from django.db import models # Create your models here. class Book(models.Model): id = models.AutoField(primary_key=True) title = models.CharField(max_length=32, unique=True) state = models.BooleanField() pub_date = models.DateFi…
1.models.py from django.db import models # Create your models here. class Class(models.Model): id = models.AutoField(primary_key=True) # 主键 cname = models.CharField(max_length=32) # 班级名称 first_day = models.DateField() # 开班时间 class Student(models.Mode…
核心知识点: 1.明白表之间的关系 2.根据关联字段确定正反向,选择一种方式 在Django的ORM种,查询既可以通过查询的方向分为正向查询和反向查询,也可以通过不同的对象分为对象查询和Queryset查询. 下面会一一进行讲解,首先给出表结构对应关系,以及表格中的数据: from django.db import models # Create your models here. class Book(models.Model): title = models.CharField(max_le…
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826222.html ==========模型层面========== 一:_table_exist 检查该模型对于的数据库表是否存在,是则返回1,否则返回0. @api.model_cr def _table_exist(self): pass ==========模型记录层面========== 二:create(self,vals) 记录的创建函数,一般情况下,是根据视图传过来的dict对象,生成…
运行环境 1. Django:2.1.3 version 2. PyMysql: 0.9.3 version 3. pip :19.0.3 version 4. python : 3.7 version 4. Mysql : 8.0.15 version 1. 在 配置文件 settings.py 中 注释 MIDDLEWARE 中的中间件 CSRF 2.在项目根路径下 创建静态文件夹 static , 并在 配置文件中进行配置, 在最后添加: STATICFILES_DIRS = ( os.p…
什么是聚合查询,就是使用聚合函数做计算 from django.db.models import Count,Avg,Max,Min   #聚合函数要从模块中导入 from django.db.models import F,Q   #与或非得 查询需要从模块倒入F和Q 聚合查询 需求 计算所有书的价格from django.db.models import Count,Avg,Max,Min,Sum #聚合函数要从模块中导入ret = models.Book.objects.all().agg…
基于对象的跨表查询是子查询 基于双下划线的查询是连表查询 PS:基于双下划线的跨表查询 正向按字段,反向按表名小写 一对一 需求:查询lqz这个人的地址# 正向查询ret = models.Author.objects.filter(name='lqa').values('author_detail__addr') #Author表作为基表,然后从基表中查到人名,然后从Authonr表跨到author_detail表中获取name对应的addr字段ret = models.Author.obje…
基于对象的跨表查询 基于对象的跨表查询'''正向和反向查询'''# 正向 ----> 关联字段在当前表中,从当前表向外查叫正向# 反向 ---> 关联字段不在当前表中,当当前表向外查叫反向 '''一对一的查询'''# 查询lqz这个人的地址 正向查询按字段author = models.Author.objects.filter(name='qlz').first()print(author.author_detail.addr)   #这样就获取到了地址 # 查询lqz这个人的地址 反向查询…
参考网址:http://www.ruiwant.com/magento-for-dev-part-5-magento-models-and-orm-basics.html…
对于数据库来说一般表结构只会有三种对应关系,分别是一对一.一对多和多对一,下面分别介绍: 1.一对多 何为一对多,例如一个学生只可能有一个班级,一个班级却又多个学生,班级表和学生表就是一对多的关系. 在查询信息的时候有两种方式:正向查询和反向查询. (1)正向查询 models.Student.objects.first() <Student: Student object>#返回一个学生对象 models.Student.objects.first().sname #可以查询学生信息 '科比…