odoo——入门教程整理(二)

本文是根据网上的odoo教程整理出来的,具体内容为创建一个待办事项的odoo应用

参考资料:

  1. B站视频——odoo开发入门与精通
  2. Alan Hou的个人博客
  3. csdn博客——滴霸哥
    感谢大哥们的经验分享

第二篇是对B站视频的第二讲整理。 主要内容:

  1. 认识两个新的字段类型
  • selection
  • Datetime
  1. 为字段添加计算属性 compute

 

为待办事项添加新功能

 

models.py

添加新的功能先在 models.py 中为 todo.task 类添加新的字段

  • priority——用来表示事项的紧急程度
  • deadline ——待办事项的截止日期
  • is_expired——自动计算待办事项是否过期
 

1.priority

这里用到selection字段类型,是一个包含值和描述的列表结构,值可以是整数或者字符串,0会表示未设置。 在 is_done字段下一行添加下面代码,default为默认的选项

    priority = fields.Selection([('todo', '待办'), ('normal', '普通'), ('urgency', '紧急')], default='todo', string='紧急程度')
 

2.deadline

Datetime 字段类型表示时间 添加如下代码

    deadline = fields.Datetime(string='截止时间')
 

3.is_expired

这里我们为此字段添加一个compute属性,并添加计算是否过期的方法自动计算待办是否已经过期。代码如下:

    is_expired = fields.Boolean(string='是否过期', compute='_compute_is_expired')

    def _compute_is_expired(self):
        for rec in self:
            if rec.deadline:
                rec.is_expired = rec.deadline < fields.Datetime.now()
            else:
                rec.is_expired = False

接下来修改视图文件

views.xml

视图文件中 id为todo_task_list为主界面的视图,在tree节点中添加上面的三个新字段,修改后的代码为:

    <record model="ir.ui.view" id="todo_task_list">
      <field name="name">Todo Task List</field>
      <field name="model">todo.task</field>
      <field name="arch" type="xml">
        <tree>
          <field name="name"/>
          <field name="is_done"/>
          <field name="priority" />
          <field name="deadline" />
          <field name="is_expired" />
        </tree>
      </field>
    </record>

同理,在点击后的详情视图——id为todo_task_form,也添加新的字段属性

    <record model="ir.ui.view" id="todo_task_form">
      <field name="name">Todo Task Form</field>
      <field name="model">todo.task</field>
      <field name="arch" type="xml">
        <form>
          <sheet>
            <group>
              <group>
                <field name="name"/>
                <field name="priority" />
              </group>
              <group>
                <field name="is_done"/>
                <field name="deadline" />
                <field name="is_expred" />
              </group>
            </group>
          </sheet>
        </form>
      </field>
    </record>

 

效果图

修改python文件后需要重启才能更新,xml文件则不需要。 重启并安装更新,得到我们新的todo应用。 todo_app_v2_1 todo_app_v2_2 todo_app_v2_3