如何在odoo中过滤一周中的任何一天?

时间:2018-04-19 07:01:23

标签: python xml datetime filter odoo

例如:我需要过滤“星期一”的任务,我不知道该怎么做。
我试过几种方法,但我找不到解决办法。

我是为“上周”和“本周”做的:

<filter string="Last Week" name="last_week" separator="1"
        domain="[('date', '&gt;=', ((context_today()+relativedelta(weeks=-2, days=1, weekday=0)).strftime('%Y-%m-%d'))),
               ('date', '&lt;=', ((context_today()+relativedelta(weeks=-1,weekday=6)).strftime('%Y-%m-%d')))]"/>

<filter string="This Week" name="this_week" separator="1"
        domain="[('date', '&lt;=', ((context_today()+relativedelta(weeks=0, days=7, weekday=-1)).strftime('%Y-%m-%d'))),
               ('date', '&gt;=', ((context_today()-relativedelta(weeks=1, weekday=0)).strftime('%Y-%m-%d')))]"/>

任何有想法的人?对不起我的英语。

1 个答案:

答案 0 :(得分:0)

我偶然发现了您的问题,同时也在寻找解决方案。我不确定是否相关,但即使不相关也可能对其他人有所帮助。

这是我获得过去某一天过滤条件的解决方案。如果您想过滤一个星期一的所有数据,那么今天是星期六,那么此解决方案将为您服务。

('create_date','>=',(context_today()-relativedelta(days=(context_today().weekday()-A), weeks=B)).strftime('%Y-%m-%d')), 
('create_date','<',(context_today()-relativedelta(days=(context_today().weekday()-A))).strftime('%Y-%m-%d'))

其中:

A =工作日nr。 (即mon = 0,tue = 1等)

B =您想返回的周数。 (如果是同一周,请删除)

因此,如果您想获取上周一的数据,则应该可以:

<filter 
string="Last Week" 
name="last_week" 
separator="1"
domain="[('date','&gt;=',(context_today()-relativedelta(days=(context_today().weekday()-0))).strftime('%Y-%m-%d')), 
        ('date','&lt;',(context_today()-relativedelta(days=(context_today().weekday()-0))).strftime('%Y-%m-%d'))]"
/>

希望它会有所帮助并且起作用。