# model文件
# -*- coding: utf-8 -*-
from odoo import api, fields, models class TodoTestYear(models.Model):
_name = 'todo.year'
_description = 'To-do Test Year'
_order = 'start_date'
# 年度名称
year_name = fields.Char(string='Name', required=True, translate=True)
# 年度编码
year_code = fields.Char(string='Code', required=True)
# 开始时间
start_date = fields.Date(string='Start_Date', required=True) # 小于结束时间
# 结束时间
end_date = fields.Date(string='End_Date', required=True) # 大于开始时间
quarter_ids = fields.One2many('todo.quarter', inverse_name='year_id', string='Quarter')
month_ids = fields.One2many('todo.month',inverse_name='year_id', string='Month') class TodoTestQuarter(models.Model):
_name = 'todo.quarter'
_description = 'To-do Test Quarter'
# 季度名称
quarter_name = fields.Char(string='Quarter_Name', required=True)
# 季度编码
quarter_code = fields.Char(string='Quarter_Code', required=True)
# 开始时间
start_date = fields.Date(string='Start_Date', readonly=True) # 小于结束时间,逐季变大
# 结束时间
end_date = fields.Date(string='End_Date', readonly=True) # 大于开始时间, 逐季变大
year_id = fields.Many2one(comodel_name='todo.year', string='Year') class TodoTestMonth(models.Model):
_name = 'todo.month'
_description = 'To-do Test Month'
# 月份名称
month_name = fields.Char(string='Month_Name', required=True)
# 月份编码
month_code = fields.Char(string='Month_Code', required=True)
# 开始时间
start_date = fields.Date(string='Start_Date', readonly=True) # 小于结束时间,逐月变大
# 结束时间
end_date = fields.Date(string='End_Date', readonly=True) # 大于结束时间,逐月变大
# 所属季度
quarter_id = fields.Many2one(comodel_name='todo.quarter', readonly=True, string='Quarter') # 取值同1年度内的季度行表中的季度,格式为季度的 Code,注意行结构不提供链接
year_id = fields.Many2one(comodel_name='todo.year', string='Year')
# xml文件
<?xml version="1.0"?>
<odoo> <act_window id="todo_test_action"
name="To-do Test"
res_model="todo.year" />
<!---->
<menuitem id="todo_test_menu_action"
name="Todos"
action="todo_test_action"/> <!--form视图-->
<record id="todo_test_view_form" model="ir.ui.view">
<field name="name">To-do Test year Form</field>
<field name="model">todo.year</field>
<field name="arch" type="xml">
<form string="To-do Test">
<header>
<button name="create_month" type="object" string="Create Month" class="create_month"/>
</header>
<sheet>
<group name="group_top">
<group name="group_left">
<field name="year_name"/>
<field name="year_code"/>
</group>
<group name="group_right">
<field name="start_date"/>
<field name="end_date"/>
</group>
</group>
<notebook>
<page string="Quarter">
<field name="quarter_ids">
<tree>
<field name="quarter_name"/>
<field name="quarter_code"/>
<field name="start_date"/>
<field name="end_date"/>
</tree>
</field>
</page>
<page string="Month">
<field name="month_ids">
<tree>
<field name="month_name"/>
<field name="month_code"/>
<field name="start_date"/>
<field name="end_date"/>
<field name="quarter_id"/>
</tree>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record> <!--tree视图-->
<record id="todo_test_view_tree" model="ir.ui.view">
<field name="name">To-do Test year Tree</field>
<field name="model">todo.year</field>
<field name="arch" type="xml">
<tree>
<field name="year_name"/>
<field name="year_code"/>
<field name="start_date"/>
<field name="end_date"/>
</tree>
</field>
</record> <record id="todo_test_view_search" model="ir.ui.view">
<field name="name">To-do Test year Search</field>
<field name="model">todo.year</field>
<field name="arch" type="xml">
<search>
<field name="year_name" string="Year" filter_domain="['|',('year_name','ilike',self),('year_code','ilike',self)]"/>
</search>
</field>
</record> </odoo>

odoo——日历的一对多与多对一的更多相关文章

  1. EF里一对一、一对多、多对多关系的配置和级联删除

    本章节开始了解EF的各种关系.如果你对EF里实体间的各种关系还不是很熟悉,可以看看我的思路,能帮你更快的理解. I.实体间一对一的关系 添加一个PersonPhoto类,表示用户照片类 /// < ...

  2. Django ORM、一对一、一对多、多对多、详解

    上篇博客也提到这些知识点,可能大家还是不太清楚,这篇博客为大家详细讲解ORM中的几个知识点 1.1首先我们先看一个小案例: #_*_coding:utf-8_*_ from django.db imp ...

  3. 2.1、Hibernate多表操作--一对多、多对一、多对多。

    一.什么是一对一.一对多.多对一及多对多关系(以简单的学生和老师的关系为例来说): 1.一对一:学生具有学号和姓名(假定没有同名的学生)这两个属性,那么我知道了学生的学号也就能找到对应的学生姓名,如果 ...

  4. 【Hibernate框架】关联映射(一对多,多对一)

    根据我们的总结计划,上篇文章我们总结了有关于一对一映射相关知识,接下来,我们进行下一个阶段,一对多.多对一映射相关知识. 场景设定: 国家规定,一个人只能在一个公司上班,一个公司可以拥有很多员工.我们 ...

  5. Hibernate一对一、一对多、多对多注解映射配置

    一对一: 一对多: 多对多:

  6. EF里一对一、一对多、多对多关系的配置

    EF关系规则 参考文章:http://www.cnblogs.com/feigao/p/4617442.html Entity Framework 实体间的关系,一对一,一对多,多对多,根据方向性来说 ...

  7. Hibernate中一对多和多对一关系

    1.单向多对一和双向多对一的区别? 只需要从一方获取另一方的数据时 就使用单向关联双方都需要获取对方数据时 就使用双向关系 部门--人员 使用人员时如果只需要获取对应部门信息(user.getdept ...

  8. Django 一对多,多对多关系解析

    [转]Django 一对多,多对多关系解析   Django 的 ORM 有多种关系:一对一,多对一,多对多. 各自定义的方式为 :        一对一: OneToOneField         ...

  9. 六 mybatis高级映射(一对一,一对多,多对多)

    1  订单商品数据模型 以订单商品数据为模型,来对mybaits高级关系映射进行学习.

随机推荐

  1. Apache Flink - Batch(DataSet API)

    Flink DataSet API编程指南: Flink中的DataSet程序是实现数据集转换的常规程序(例如,过滤,映射,连接,分组).数据集最初是从某些来源创建的(例如,通过读取文件或从本地集合创 ...

  2. AbstractRoutingDataSource动态数据源切换,AOP实现动态数据源切换

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/u012881904/article/de ...

  3. IdentityServer4入门三:授权模式

    在入门一.入门二我们实现了一个完整的API保护的过程.需要保护的API只需在其Controler上应用[Authorize]特性,来显式指定受保护的资源.而我们实现的这个例子,所应用的模式叫“Clie ...

  4. 微信小程序wx.request的简单封装

    前言 之前写小程序,每次请求后台时都直接调用原生的API,wx.request,每次都要写url,data,回调函数等,正好前段时间,小程序项目需要添加新内容,趁此机会,做一个封装的请求工具,比较简单 ...

  5. keras Model 1 入门篇

    1 入门 2 多个输入和输出 3 共享层 最近在学习keras,它有一些实现好的特征提取的模型:resNet.vgg.而且是带权重的.用来做特诊提取比较方便 首先要知道keras有两种定义模型的方式: ...

  6. 012-多线程-JUC集合-Queue-SynchronousQueue和LinkedTransferQueue

    一.SynchronousQueue概述 SynchronousQueue是一个不存储元素的队列.每一个put操作必须等待一个take操作,否则不能继续添加元素. 它支持公平访问队列.默认情况下线程采 ...

  7. 开启windows ping端口功能

    1.打开控制面板,选择程序 2.选择打开和关闭windows功能 3.将Tenet客户端选项勾上 4.运行栏中输入cmd,进入到命令窗口 5.输入命令   ping    ip地址     端口号  ...

  8. PAT 甲级 1041 Be Unique (20 分)(简单,一遍过)

    1041 Be Unique (20 分)   Being unique is so important to people on Mars that even their lottery is de ...

  9. Node.js报错TypeError: Cannot read property 'isDirectory' of undefined

    截图如下: 原因如下:记住"./uploads" 后要加一个/ fs.stat("./uploads/" + files[i], function(err, s ...

  10. 多林环境中的ADFS

    公司有两个或更多Active Directory林,但是只有一个ADFS,如何让ADFS支持多个域林呢?(一个ADFS只能部署在一个域中,不能跨域) 答案是:在部署ADFS的林和所有其他林之间建立双向 ...