Odoo14有哪些视图,描述它们的作用 Odoo14假设有- -个model Class ma(models.model): _name = 'pss.ma' name = fields.char(stirng= title') dat = fields.datetime() 需要查询本月的全部,如何写? 需要查询本月的全部加上标题是N的全部,如何写? 在上述基础上输出json格式,如何写? Odoo14如何继承model并改写原有的字段?如何新增字段?
时间: 2023-05-23 08:05:14 浏览: 160
如何显示当月的所有日期
A:Odoo14有以下几种视图:
1. 列表视图(List view):展示数据表格,每一行对应一个记录。
2. 表单视图(Form view):针对每个记录给出一个表单,可进行编辑操作。
3. 图表视图(Graph view):将数据以图表方式呈现,便于数据分析。
4. 栅格视图(Kanban view):将记录以卡片的形式呈现,方便查看。
5. 日历视图(Calendar view):将记录以日历的形式呈现,展示时间性数据。
以上视图的作用和应用场景在不同的业务流程中有所差异。
针对给出的model Class ma(models.model),如果需要查询本月的全部,可以使用Odoo提供的日期范围过滤器,在视图中使用以下过滤器:
<filter name="this_month" string="This Month"
domain="[('dat', '>=', datetime.date.today().replace(day=1).strftime('%Y-%m-%d')), ('dat', '<=', datetime.date.today().replace(day=calendar.monthrange(datetime.date.today().year,datetime.date.today().month)[1]).strftime('%Y-%m-%d'))]"/>
如果需要查询本月的全部加上标题是N的全部,可以给过滤器加上标题的过滤条件,如下所示:
<filter name="this_month_with_title" string="This Month with title N"
domain="[('dat', '>=', datetime.date.today().replace(day=1).strftime('%Y-%m-%d')), ('dat', '<=', datetime.date.today().
replace(day=calendar.monthrange(datetime.date.today().year, datetime.date.today().month)[1]).
strftime('%Y-%m-%d')), ('name', '=', 'N')]"/>
针对上述基础上输出json格式,可以使用Odoo提供的JSON API进行操作,具体代码如下:
import xmlrpclib
import json
username = 'admin'
pwd = 'password'
dbname = 'database'
# DB信息
sock_common = xmlrpclib.ServerProxy ('http://localhost:8069/xmlrpc/common')
uid = sock_common.login(dbname, username, pwd)
# 访问model
sock = xmlrpclib.ServerProxy('http://localhost:8069/xmlrpc/object')
search_params = [('dat', '>=', datetime.date.today().replace(day=1).strftime('%Y-%m-%d')),
('dat', '<=', datetime.date.today().
replace(day=calendar.monthrange(datetime.date.today().year, datetime.date.today().month)[1]).
strftime('%Y-%m-%d')), ('name', '=', 'N')]
result = sock.execute(dbname, uid, pwd, 'pss.ma', 'search_read', search_params, ['name', 'dat'])
print json.dumps(result)
针对Odoo14如何继承model并改写原有的字段和新增字段,可以在新的model中继承原有的model,并调用各种Odoo API进行开发操作,具体代码如下:
class MaInherited(models.Model):
_inherit = 'pss.ma'
# 改写字段
date = fields.Date(string='Date', default=lambda self: datetime.date.today().strftime('%Y-%m-%d'))
# 新增字段
desc = fields.Char(string='Description')
# 自定义方法
def do_something(self):
pass
继承后可以对原有的字段进行重命名,修改类型、默认值以及添加新的约束条件。新增字段时需要考虑业务需求和数据类型,通常需要进行数据迁移或初始化。在model中还可以定义各种自定义方法,以便在各种业务场景中进行调用。
阅读全文