向模型中添加字段

来自Odoo大V社-odoo中文开发手册
110799065讨论 | 贡献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属性。

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