Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Odoo、域、筛选器日期和月份_Python_Date_Filter_Odoo - Fatal编程技术网

Python Odoo、域、筛选器日期和月份

Python Odoo、域、筛选器日期和月份,python,date,filter,odoo,Python,Date,Filter,Odoo,我尝试在sale.report中创建一个过滤域,其格式为:月(订单日期)=月(当前日期)和日(订单日期)Odoo将日期存储为unicode字符串。实际上,您需要使用datetime.datetime类。 例如: datetime.datetime.strtime(,%Y-%m-%d%H:%m:%S”).strftime(“%%m”)如果要按照说明筛选数据,则需要使用其他字段来存储订单月份和日期 'order_month' : fields.char('Month') 'order_day' :

我尝试在sale.report中创建一个过滤域,其格式为:月(订单日期)=月(当前日期)和日(订单日期)Odoo将日期存储为unicode字符串。实际上,您需要使用datetime.datetime类。 例如:


datetime.datetime.strtime(,%Y-%m-%d%H:%m:%S”).strftime(“%%m”)

如果要按照说明筛选数据,则需要使用其他字段来存储订单月份和日期

'order_month' : fields.char('Month')
'order_day' : fields.char('Day')
'order_year' : fields.char('Year')
在默认情况下添加所有这些字段

'order_month' : lambda *a: str(time.strftime('%m')),
'order_day' : lambda *a: str(time.strftime('%d')),
'order_year' : lambda *a: str(time.strftime('%Y')),

现在,您可以在过滤中直接添加这些字段。

我发现解决方案,sale.report不是一个真实的模型,而是一个视图。对于“添加”字段,您需要覆盖选择方法。 所以


下面是一个你如何做到这一点的例子。在本例中,我搜索write_date(即datetime)=昨天的用户

yesterday = datetime.datetime.now() - datetime.timedelta(days = 2)
yesterday_beginning = datetime.datetime(yesterday.year, yesterday.month, yesterday.day,0,0,0,0)
yb = yesterday_beginning.strftime("%Y-%m-%d %I:%M:%S")
today = datetime.datetime.now()
today_beginning = datetime.datetime(today.year, today.month, today.day,0,0,0,0)
tb = today_beginning.strftime("%Y-%m-%d %I:%M:%S")
self.env['res.users'].search([('write_date','>=',yb),('write_date','<',tb)])
dayed=datetime.datetime.now()-datetime.timedelta(天=2)
昨天开始=datetime.datetime(昨天.年,昨天.月,昨天.日,0,0,0)
yb=昨天\u开始.strftime(“%Y-%m-%d%I:%m:%S”)
今天=datetime.datetime.now()
今天开始=datetime.datetime(今天.年,今天.月,今天.日,0,0,0)
tb=今天\u开始.strftime(“%Y-%m-%d%I:%m:%S”)

self.env['res.users'].search([('write_date','>=',yb),('write_date','不需要通过Python代码实现,您可以在xml中执行此操作,如:

<filter string="Current Month" domain="[('payment_date','&gt;=',context_today().strftime('%%Y-%%m-01')),('payment_date','&lt;',(context_today()+relativedelta(months=1)).strftime('%%Y-%%m-01'))]"/>

<filter string="Next Month" domain="[('payment_date','&gt;=',(context_today()+relativedelta(months=1)).strftime('%%Y-%%m-01')),('payment_date','&lt;',(context_today()+relativedelta(months=2)).strftime('%%Y-%%m-01'))]"/>


我认为你是原因:左操作数不能是对象,只能是字符串。所以我尝试了你的主张,但我不能在模型销售报告中添加字段。字段在模型的UI中可见,但在数据库中不可见。你知道吗?
类销售报告(osv.osv):\u inherit='sale.report'date\u month=Fields.Char(string='date month')date\u day=fields.Char(string='date day')
我没有错误消息。是的,在运算符的左侧必须有一个数据库字段名,您不能对其应用任何函数。要将这些字段更新到数据库中,您必须更新该模块。这不起作用。我认为禁止在筛选器中域的左操作数中使用函数将表达式的结果存储在新字段中你可以用它。
yesterday = datetime.datetime.now() - datetime.timedelta(days = 2)
yesterday_beginning = datetime.datetime(yesterday.year, yesterday.month, yesterday.day,0,0,0,0)
yb = yesterday_beginning.strftime("%Y-%m-%d %I:%M:%S")
today = datetime.datetime.now()
today_beginning = datetime.datetime(today.year, today.month, today.day,0,0,0,0)
tb = today_beginning.strftime("%Y-%m-%d %I:%M:%S")
self.env['res.users'].search([('write_date','>=',yb),('write_date','<',tb)])
<filter string="Current Month" domain="[('payment_date','&gt;=',context_today().strftime('%%Y-%%m-01')),('payment_date','&lt;',(context_today()+relativedelta(months=1)).strftime('%%Y-%%m-01'))]"/>

<filter string="Next Month" domain="[('payment_date','&gt;=',(context_today()+relativedelta(months=1)).strftime('%%Y-%%m-01')),('payment_date','&lt;',(context_today()+relativedelta(months=2)).strftime('%%Y-%%m-01'))]"/>