栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Cocos2d-x

DTCloud 模型

Cocos2d-x 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

DTCloud 模型

模型 1.文件夹目录
my_addons 
├─ __init__.py #--------Py代码由init加载
├─ __manifest__.py #----模块声明文件,包含声明、加载数据名和指令
├─ controllers #--------网站控制器,定义web访问的返回,也常用于IoT
│ ├─ __init__.py 
│ └─ controllers.py 
├─ data #---------------初始化数据文件目录
├─ demo #------------带演示数据的数据文件,可用于测试、培训或模块评测
│ └─ demo.xml 
├─ i18n #---------国际化文件目录,有翻译文件,可供用户使用时切换语言
├─ models #----代码核心,包含我们的各种模型
│ ├─ __init__.py 
│ └─ models.py 
├─ security #------------权限控制目录
│ └─ ir.model.access.csv #不同用户分组相应model对象的查改增删权限
├─ static #-----------静态资源目录。特别是web所需的固定图片和页面等
└─ views #-------视图文件目录。决定models目录下model的前端界面呈现
├─ templates.xml 
└─ views.xml

*目录示例,并不固定
*models文件夹包含模块核心代码——模型
*views文件夹包含前端各种视图展示逻辑
1.1 常用目录
api/ 提供外部调用接口
controllers/ 包含控制器
data/ 演示和实际数据的xml
doc/ 重点说明
i18n/ 语言目录
models/ 模型定义
report/ 存放报表相关的python对象和xml
security/权限,规则,对象操作权限定义(读取,创建,删除,修改)
static/ 包含页面相关的,一般划分为css, less,js,img,xml,grf,安装后浏览器可以直接访问文件夹下的文件
tests/ 存放python和yml测试用例
views/ 包含视图和模板
wizard/ 放临时的model和视图

1.2 其他可选的文件夹:

demo/ 测试数据
edi/ 数据交换
rubylong/ 锐浪报表

1.3 完善各文件信息(最简)
  • manifest.py
# -*- coding: utf-8 -*-
{
'name': 'App name',#模块的标题
'summary': '摘要',#模块的子标题 
'version': '1.0',#版本号
'category': '类别',#模块的分类,在设置->用户&公司->群组中"应用"字段中可以看到
'sequence': 0,#模块在apps中的排列的序号,影响展示顺序
'author': 'App author',#作者
'website': 'www.yourconpanywebsite.com',#以上为module基本信息
'depends': ['base'],#你的module依赖
'data': [
'security/ir.model.access.csv',#引用你security文件夹下的权限文件
'views/views.xml',#引用你views文件夹下的视图文件
],
'demo': [
],#加载demo文件
'qweb': [
],#加载qweb template文件
'installable': True,#是否可安装
'application': True,#: 是否是应用,在应用列表中,被应用筛选隔离,好的开发习惯应该谨慎考虑是否是应用
'auto_install': False,#是否自动安装
'description': """ # 模块的描述性文字
""",
}

其中,重点是data键里的声明,新建或文件多了时容易漏,在data里面需要注意加载的文件顺序。

  • init.py
from . import models
  • views.xml






  • models.py & init.py

models.py

# -*- coding: utf-8 -*-
from dtcloud import models
class test1(models.Model):#这是一个模型对象
_name = 'test1.test1'#模型内部标识符
print('hello dtcloud')

init.py

from . import models #引入加载的.py文件夹
  • ir.model.access.csv
    每个模型都需要设置权限
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_test1_test1_user,test1.test1,model_test1_test1,,1,1,1,1

id:权限id,默认规则是access_模块名_类名
name:权限名,默认规则是模块名.类名
model_id:id :这个是固定写法,规则是model_模块名_类名
group_id:id :组id
perm_read,perm_write,perm_create,perm_unlink
对应读、写、增加、删除权限,1是有权限,0是无权限,具体根据需要来设置权限
*第一行为格式,第二行为test1 model的权限设置

2. 模型

DTCloud中,一切皆模型,连视图都是模型。DTCloud将各种数据,如:权限数据、类数据、视图数据等,按照模型分表存储,然后在查看时,按照索引从各个表格读取信息,组合成我们看到的内容。

2.1 模型的属性

模型内置属性:可以使用一些内置属性来定义模型的一些特性:
_name :创建DTCloud模型的内部标识符,必含项。
_description :当用户界面显示模型时,一个方便用户的模型记录标题。
_rec_name:用来指出引用关联字描述记录的字段,例如多对一关系。 默认情况下,它使用name:字段,这是模型中常见的字段。但是这个属性允许我们使用任何其他字段来实现这个目的。
_inherit :继承。
_inherits :委托继承。

2.2 模型对象的获取

DTCloud模型被保存在一个中央注册中心,它可以引用实例中可用的所有模型类,并且它可以被一个模型名引用。在我们编写的模型方法代码中,可以通过 self.env[‘x’] 获取一个代表model x的类的引用。(相当于spring托管对象)
模型名称很重要,因为它们是用于访问注册中心的。模型名称的约定规则:用点分隔的小写字母列表。
模型名称必须是全局唯一。

2.3 DTCloud中的三种模型

1)基本模型models.Model
绝大多数DTCloud模型中,类都是基于models.Model类的。 这种类型的模型具有永久的数据库持久性:为它们创建数据库表,并且它们的记录被存储,直到被显式删除。
2)瞬态模型models.TransientModel
通常用于向导(wizard)。 它们的数据仍然存储在数据库中,但是临时的,一个清理作业定期从这些表中清除旧数据。
3)抽象模型models.AbstractModel
不存储数据,不会在数据库创建表。 抽象模型作为可重用的功能集,利用DTCloud的继承功能,混入到其他模型。通常用于定义接口或者用作报表模型。

2.4 模型之间的关系

常通过关系字段(Many2one、One2many、Many2many)建立模型关系。命名字段时,有以下约定:以_id、_ids为结尾命名的字段,分别对应的是Many2one和One2many的关系。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/952162.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号