odoo17开发教程(8):设置界面UI的字段属性

目录

添加字段

给字段设置只读和不可拷贝

给字段添加默认值

保留字段


本节目标:在本文末尾,售价(selling price)应为只读值,卧室数量(bedrooms)和可用日期(availability date)应为默认值。此外,在复制记录时,售价和可用日期值不会被复制。

Interaction between model and view

添加字段

字段 active 和 state 需要被添加到 estate.property 模型中。

我们现在的模型看起来是这样的,注意新添加的两个字段:

class EstateProperty(models.Model):_name = "estate_property"_description = "Estate Property"name = fields.Char(required=True)description = fields.Text()postcode = fields.Char()date_available = fields.Date()expected_price = fields.Float(required=True)selling_price = fields.Float()bedrooms = fields.Integer()living_area = fields.Integer()facades = fields.Integer()  # 外墙garage = fields.Boolean()garden = fields.Boolean()garden_area = fields.Integer()garden_orientation = fields.Selection([("north", "North"),("south", "South"),("east", "East"),("west", "West"),])active = fields.Boolean(default=True)state = fields.Selection([("new", "New"),("offer_received", "Offer Received"),("offer_accepted", "Offer Accepted"),("sold", "Sold"),("canceled", "Canceled"),], default="new",copy=False)

到目前为止,我们只在房地产广告中使用了通用视图,但在大多数情况下,我们希望对视图进行微调。在 Odoo 中可以进行许多微调,但通常第一步是确保:

  • 某些字段有默认值
  • 某些字段为只读
  • 复制记录时不会复制某些字段

 在我们的房地产模块中,我们希望做到以下几点:

  • 售价应为只读(稍后将自动填写)
  • 复制记录时,不应复制供货日期和售价
  • 默认卧室数量应为 2
  • 默认可用日期应为 3 个月内

在进一步进行视图设计之前,让我们先回到模型定义。我们看到,一些属性(如 required=True)会影响数据库中的表模式。

给字段设置只读和不可拷贝

下面给我们的estate_property里面的selling_price设置只读,和不可拷贝

date_available = fields.Date(copy=False)
selling_price = fields.Float(readonly=True, copy=False)

重启容器,Upgrade你的模块,你将看到如下效果,现在selling price应该不可改了:

给字段添加默认值

任何字段都可以有默认值。在字段定义中,添加 default=X 选项,其中 X 可以是一个 Python 字面值(布尔、整数、浮点、字符串),也可以是一个获取模型并返回值的函数:

name = fields.Char(default="Unknown")
last_seen = fields.Datetime("Last Seen", default=fields.Datetime.now)

name 字段的默认值为 "未知",而 last_seen 字段的默认值为当前时间。

下面给我们的estate_property模型设置默认值。

  • 默认卧室数量为 2
  • 默认可用日期为 3 个月

模型代码如下:

from odoo import models, fields, api
from dateutil.relativedelta import relativedeltaclass EstateProperty(models.Model):_name = "estate_property"_description = "Estate Property"def _get_default_date_available(self):# 使用 fields.Date.today() 获取当前日期,并添加三个月return fields.Date.today() + relativedelta(months=+3)name = fields.Char(required=True, default="Unknown")description = fields.Text()postcode = fields.Char()date_available = fields.Date(copy=False, default=_get_default_date_available)expected_price = fields.Float(required=True)selling_price = fields.Float(readonly=True, copy=False)bedrooms = fields.Integer()living_area = fields.Integer()facades = fields.Integer()  # 外墙garage = fields.Boolean()garden = fields.Boolean()garden_area = fields.Integer()garden_orientation = fields.Selection([("north", "North"),("south", "South"),("east", "East"),("west", "West"),])active = fields.Boolean(default=True)state = fields.Selection([("new", "New"),("offer_received", "Offer Received"),("offer_accepted", "Offer Accepted"),("sold", "Sold"),("canceled", "Canceled"),], default="new")

 重启容器,并Upgrade你的模块,点击新建的时候可以看到名字默认为Unknown,日期自动变成了3个月后

保留字段
 

一些字段名称是为预定义行为保留的。当需要相关行为时,应在模型上定义它们。

我们已经在文章的开头将active和state字段添加到 estate.property 模型中,当把active设置成false是,默认的房屋列表中将不会显示active=false的房屋。

active 是保留字段,具有特定行为:当记录的 active=False 时,它将自动从任何搜索中移除。要显示创建的属性,需要专门搜索非活动记录。

Inactive records

有了默认视图,我们就可以与用户界面交互了!下一节我们将定义自己的视图。

继续加油!


"Education is the most powerful weapon which you can use to change the world." - Nelson Mandela

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/752270.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【解读】保障软件供应链安全:SBOM推荐实践指南(含指南获取链接)

2023年11底,美国NSA(National Security Agency)、CISA(Cybersecurity and Infrastructure Security Agency)等多个政府机构部门组成的ESF(Enduring Security Framework,持久安全框架&#xff09…

OGRE Pittfals Design proposal for Ogre 2.0

OGRE Pittfals & Design proposal for Ogre 2.0

Python的网络爬虫介绍与实战

Python的网络爬虫基础介绍与实战 定义流程包和函数静动态网页爬虫实战红牛分公司?二手房数据(静态网页)豆瓣读书(动态网页) 定义 网络爬虫是按照一定的规则,自动地抓取万维网(www)信…

rust引用本地crate

我们可以动态引用crate,build时从crate.io下载,但可能因无法下载导致build失败。首次正常引用三方crate,build时自动下载的crate源码,我们将其拷贝到固定目录中; build后可在RustRover中按住Ctrl键,在crat…

图解Kafka架构学习笔记(一)

本文参考尚硅谷大数据技术之Kafka。 消息队列 (1)点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除) 点对点模型通常是一个基于拉取或者轮询的消息传送模型,这种模型从队列中请求信息…

基于Spark的气象数据处理与分析

文章目录 一、实验环境二、实验数据介绍三、数据获取1.观察数据获取方式2.数据爬取3.数据存储4.数据读取5.数据结构6.爬虫过程截图 四、数据分析1.计算各个城市过去24小时累积雨量2.计算各个城市当日平均气温3.计算各个城市当日平均湿度4.计算各个城市当日平均风速 五、数据可视…

ARM_基础之RAS

Reliability, Availability, and Serviceability (RAS), for A-profile architecture 源自 https://developer.arm.com/documentation/102105/latest/ 1 Introduction to RAS 1.1 Faults,Errors,and failures 三个概念的区分: • A failure is the event of devia…

保研|资讯|夏令营|3.31截止!香港城市大学市场营销学系首届学术暑期夏令营

香港城市大学市场营销学系首届学术暑期夏令营 1 项目简介 我们的博士项目致力为未来营销科学和工商管理学界培养一流学者和行业领袖。博士项目一般为期四到六年,允许本科生直接申请。课程包括实证分析模型,消费者行为研究,博弈微观模型&…

从零开始学习数据结构与算法:Python实现【第139篇—Python实现】

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 从零开始学习数据结构与算法:Python实现 数据结构与算法是计算机科学中至关重要…

Redis7学习记录(1)

Redis入门概述 Redis介绍 Redis:REmote Dictionary Server(远程字典服务器) 官网:Redis 中文官网:Redis中文网 Redis的功能及应用 redis是基于内存的KV键值对内存数据库。 redis是key-value数据库(NO…

[VCTF2024纳新赛]-PWN:ezhp_code解析

查看保护 查看ida 简单来说就是创建堆块和删除堆块而已,创建堆块的函数附带有写入函数。 但这里要注意一个程序里面的特殊的地方 在我们创建堆块时,程序会先创建一个0xa0大小堆块,并且这个地方还有个特殊的check_handle函数,如果…

测试人员Bug书写规范

📋 个人简介 作者简介:大家好,我是凝小飞,软件测试领域作者支持我:点赞👍收藏⭐️留言📝 在测试人员日常工作中,关于bug的编写和定义是一个比较经常的工作,如果bug编写描…

深度学习1650ti在win10安装pytorch复盘

深度学习1650ti在win10安装pytorch复盘 前言1. 安装anaconda2. 检查更新显卡驱动3. 根据pytorch选择CUDA版本4. 安装CUDA5. 安装cuDNN6. conda安装pytorch结语 前言 建议有条件的,可以在安装过程中,开启梯子。例如cuDNN安装时登录 or 注册,会…

十 超级数据查看器   讲解稿    详情5  隐藏功能

十 超级数据查看器 讲解稿 详情5 隐藏功能 app下载地址 百度手机助手 下载地址4 ​ 讲解稿全文: 第5讲 界面的隐藏功能 设置这些功能是为了方便用户操作 首先是编辑栏。长按一可以在一栏和二栏之间做切换,这个一、二、左箭头、右箭头&#xf…

(官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell

前言 查了很多资料都不靠谱,在安装过程中遇到很多的坑,mangoDB 服务重视起不来;出现了很多难以解决的报错,现在把安装过程中遇到的问题,和如何闭坑说一下,很多时候都是准备工作不足导致的;很多方…

利用生成式人工智能进行功能管理测试

就 DevOps 而言,生成式 AI与功能管理测试的新兴集成标志着一次重大演变。我们将认真研究这项技术如何彻底改变我们创建测试环境的方式。 使用人工智能生成测试使我们能够模拟大量的用户场景和环境,这意味着我们可以开发和部署不仅好而且很棒的功能&…

Ubuntu系统下C语言开发环境搭建与使用教程

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

graylog API 弱密码

graylog web 页面密码设置 输入密码&#xff1a;获取sha256加密后密码 echo -n "Enter Password: " && head -1 </dev/stdin | tr -d \n | sha256sum | cut -d" " -f1vi /etc/graylog/server/server.conf #修改以下配置 root_usernameroot ro…

C#,人工智能,机器学习,聚类算法,训练数据集生成算法、软件与源代码

摘要:本文简述了人工智能的重要分支——机器学习的核心算法之一——聚类算法,并用C#实现了一套完全交互式的、可由用户自由发挥的,适用于聚类算法的训练数据集生成软件——Clustering。用户使用鼠标左键(拖动)即可生成任意形状,任意维度,任意簇数及各种数据范围的训练数…

JSON 的了解和使用

目录 1. JSON 2. JSONcpp 的安装 3. JSONcpp 相关API的使用 3.1. 将 Json::Value 对象转化为 std::string 3.1.1. Json::Value 类 3.1.2. Json::Value::toStyledString 接口 3.1.3. Json::StyledWriter 类 3.1.4. Json::StyledWriter::write 接口 3.1.5. Json::Fas…