“向模型中添加字段”的版本间的差异

来自Odoo大V社-odoo中文开发手册
跳转至: 导航搜索
 
(未显示另一用户的1个中间版本)
第1行: 第1行:
被模型添加字段
+
 
被模型添加字段
+
我们将添加几个字段到todo.task模型,包括添加一个任务的所属用户和一个截至日期。创建model文件夹,在文件夹下面创建一个文件名称为todo_task.py文件(即创建todo_user / models / todo_task.py文件),该文件包含一个用于对之前某个原来的类进行继承和扩展的类,具体代码如下:
我们将添加几个字段到todo.task模型,用户负责的任务及截至日期。
+
代码风格指引推荐有一个 models/ subdirectory ,这是每个odoo模型的一个文件。所以我们应该从创建model子目录开始,以便用Python导入
+
编辑todo_user / __ init__.py文件,包含以下内容
+
from .import models
+
使用以下代码创建todo_user / models / __ init__.py:
+
from . import todo_task
+
上一行内容指引 Python 在同一目录去寻找一个叫odoo_task.py的文件,并完成导入。对于每个目录中的 Python ,你通常都有这一段从属行代码。
+
现在创建todo_user / models / todo_task.py文件,以扩展原来的模型:
+
 
  # -*- coding: utf-8 -*-
 
  # -*- coding: utf-8 -*-
from odoo import models, fields, api
+
  from odoo import models, fields, api
class TodoTask(models.Model):
+
  class TodoTask(models.Model):
_inherit = 'todo.task'
+
  _inherit = 'todo.task'
user_id = fields.Many2one('res.users', 'Responsible')
+
  user_id = fields.Many2one('res.users', 'Responsible')
date_deadline = fields.Date('Deadline')
+
  date_deadline = fields.Date('Deadline')
这个名为TodoTask的类,对于 Python文件来说,是属于本地的,一般来讲,和其他模块没有任何关系, _inherit类的属性是的关键,这就显示Odoo的这个类是继承的,用来修改todo.task模型的。
+
  
笔记备注
+
这里用到的类名为TodoTask,虽然和本书之前例子程序里面所采用的类的名字一样,但是没关系,其作用域仅限于本模块,和其他模块无关。类的属性_inherit是关键字:它告诉Odoo,这个类是从类名为todo.task类继承。注意这里不再需要_name属性。因为这个属性已经从父模型(类)继承下来。
 +
 
 +
 
 +
接下来的两行是常规字段声明。user_id表示在所有系统用户集中的某一个用户名,res.users是所有系统用户集, many2one是一个多对一关系,相当于数据库中的外键。date_deadline是一个简单的日期字段。我们将在5章(模型–构建应用数据)更详细的解释field字段的应用。
 +
 
 +
接下来在model文件夹里面还需要创建一个__init__.py文件,代码如下:
 +
#-*- coding:utf-8 -*-
 +
#!/usr/bin/env python
 +
from . import todo_task
  
注意到这里的_name属性是不存在的,因为是继承父模型的,所以不是必要的一个属性。
+
至此,就可以执行模块升级操作了,如果上面的代码都没有写错并且模块升级成功的话,我们可以通过进入菜单Setting|Technical|Database Structure|Models,并在搜索栏里面搜索todo.task查看类的细节,在Field Name中可以看到刚才添加的user_id和date_deadline属性。
  
上述代码下的两行是正则字段的声明。 user_id字段表示一个用户是从用户模型res.users引用而来。 这是一个多对一的Many2one字段,这个字段是相当于数据库术语中的外键。 这里的截止日期是一个简单的日期型的字段。 在第5章中,结构化应用数据模型 ,我们将更详细地讲解Odoo中可用的字段类型。
 
 
  上一节:[[扩展模型]]
 
  上一节:[[扩展模型]]
 
  下一节:[[修改现有字段]]
 
  下一节:[[修改现有字段]]

2018年3月2日 (五) 15:49的最新版本

我们将添加几个字段到todo.task模型,包括添加一个任务的所属用户和一个截至日期。创建model文件夹,在文件夹下面创建一个文件名称为todo_task.py文件(即创建todo_user / models / todo_task.py文件),该文件包含一个用于对之前某个原来的类进行继承和扩展的类,具体代码如下:

# -*- coding: utf-8 -*-
  from odoo import models, fields, api
  class TodoTask(models.Model):
  _inherit = 'todo.task'
  user_id = fields.Many2one('res.users', 'Responsible')
  date_deadline = fields.Date('Deadline')

这里用到的类名为TodoTask,虽然和本书之前例子程序里面所采用的类的名字一样,但是没关系,其作用域仅限于本模块,和其他模块无关。类的属性_inherit是关键字:它告诉Odoo,这个类是从类名为todo.task类继承。注意这里不再需要_name属性。因为这个属性已经从父模型(类)继承下来。


接下来的两行是常规字段声明。user_id表示在所有系统用户集中的某一个用户名,res.users是所有系统用户集, many2one是一个多对一关系,相当于数据库中的外键。date_deadline是一个简单的日期字段。我们将在5章(模型–构建应用数据)更详细的解释field字段的应用。

接下来在model文件夹里面还需要创建一个__init__.py文件,代码如下:

#-*- coding:utf-8 -*-
#!/usr/bin/env python
from . import todo_task

至此,就可以执行模块升级操作了,如果上面的代码都没有写错并且模块升级成功的话,我们可以通过进入菜单Setting|Technical|Database Structure|Models,并在搜索栏里面搜索todo.task查看类的细节,在Field Name中可以看到刚才添加的user_id和date_deadline属性。

上一节:扩展模型
下一节:修改现有字段