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…

Linux服务器搭建笔记-007:为每位用户创建硬盘配额

一、问题说明 Ubuntu服务器在使用过程中创建的新用户,每位用户会在/home目录下生成一个属于其个人的主文件夹。如果不限制各个用户的使用空间,所有的用户都会共用/home所挂载的硬盘。在这种多用户情况下,会很快的填满/home目录,导…

OGRE Pittfals Design proposal for Ogre 2.0

OGRE Pittfals & Design proposal for Ogre 2.0

小程序开发——设备属性和设备移除 API汇总

设备属性API ty.device.setDeviceProperty 设置设备属性 需引入DeviceKit,且在>1.2.6版本才可使用 请求参数 Object object 属性类型默认值必填说明deviceIdstring是deviceIdcodestring是the custom data keyvaluestring是the custom data valuecompletefunc…

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.计算各个城市当日平均风速 五、数据可视…

流媒体学习之路(WebRTC)——FEC逻辑分析(6)

流媒体学习之路(WebRTC)——FEC逻辑分析(6) —— 我正在的github给大家开发一个用于做实验的项目 —— github.com/qw225967/Bifrost目标:可以让大家熟悉各类Qos能力、带宽估计能力,提供每个环节关键参数调节接口并实现一个json全…

springboot/ssm冷链物流系统Java在线物流管理系统web物流平台

springboot/ssm冷链物流系统Java在线物流管理系统web物流平台 基于springboot(可改ssm)vue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:…

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编写描…

使用Thymeleaf导出PDF,页眉插入图片与内容重叠?

CSS 打印分页功能 需求:打印 在第一页的内容被挤到第二页的时候,又想每一页页头都有相同的样式,使用页眉。 问题:第二页的内容与页眉重叠了? 查各路找出的原因:header 页眉不占空间 解决:不…

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

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

Linux-grep命令

grep 是一个强大的文本搜索工具,可以在文件中搜索指定的字符串模式,并将包含匹配的行打印出来。下面是 grep 命令的详细用法: grep [选项] 模式 [文件...] 选项:grep 命令支持多种选项,用于控制搜索行为,常…

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

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