Python 为什么函数不返回值?
我不明白为什么函数在python中不返回,我的函数计算两个日期之间星期五和星期六的天数,但它不返回 这是我的密码:Python 为什么函数不返回值?,python,return,return-value,odoo,Python,Return,Return Value,Odoo,我不明白为什么函数在python中不返回,我的函数计算两个日期之间星期五和星期六的天数,但它不返回 这是我的密码: 您需要为该字段赋值。例如,rec.days\u compensation=浮动天数 必须在for循环外部的函数返回的开始和结束处定义friandsat: def get_compensation(self): friandsat = 0 for rec in self: if rec.mission_start_date and rec.missio
您需要为该字段赋值。例如,rec.days\u compensation=浮动天数 必须在for循环外部的函数返回的开始和结束处定义friandsat:
def get_compensation(self):
friandsat = 0
for rec in self:
if rec.mission_start_date and rec.mission_end_date:
time1 = datetime.datetime.strptime(rec.mission_start_date, "%Y-%m-%d")
time2 = datetime.datetime.strptime(rec.mission_end_date, "%Y-%m-%d")
week = {}
leave_value = {}
# Compute Number Of Friday And Saturday
for i in range((time2 - time1).days):
day = calendar.day_name[(time1 + datetime.timedelta(days=i+1)).weekday()]
week[day] = week[day] + 1 if day in week else 1
fri = week.get('Friday') if 'Friday' in week else 0 # Result Number 1 Of friday If "Start Date", "End date" --> "02/04/2019", "07/04/2019"
sat = week.get('Saturday') if 'Saturday' in week else 0 # Same thing that Friday, Numbre 1 for Saturday
friandsat = fri + sat # Result 2
return friandsat
如果计算字段在默认情况下为只读,则删除readonly属性,除非给出了反转。
使字段store=True
更新代码
@api.取决于“任务开始日期”、“任务结束日期”
def get_补偿自身:
对于rec in self:
如果记录任务开始日期和记录任务结束日期:
time1=datetime.datetime.strptimerec.mission\u开始\u日期,%Y-%m-%d
time2=datetime.datetime.strptimerec.mission\u end\u日期,%Y-%m-%d
周={}
左_值={}
计算星期五和星期六的数量
对于范围为Time2-time1.days的i:
day=日历.day\u名称[time1+datetime.timedeltadays=i+1.weekday]
周[日]=周[日]+1如果周中的某一天,则为其他1
星期五
如果一周中的“星期五”,则为“星期五”;如果开始日期、结束日期->2019年4月2日、2019年4月7日,则为“星期五”的第1个结果
星期六=一周。如果一周中的“星期六”为“星期六”,则得到“星期六”,否则星期五为0,星期六为1
记录天数\补偿=周五+周六结果2
这个函数是否返回None?您对self:to中的rec有什么期望?当您定义视图中的字段时,compute方法只是被调用。尝试“rec.days\u compensation=monandsat”,它在field@NabilTaleb这是float字段的默认值。@NabilTaleb您在视图中声明days\u补偿字段了吗?是的,我在视图中声明了字段,这在导入库中不是问题!不因为我在windows中使用odoo一体机,我真的不明白这是什么问题
@api.multi
@api.depends('mission_start_date', 'mission_end_date')
def get_compensation(self):
for rec in self:
if rec.mission_start_date and rec.mission_end_date:
time1 = datetime.datetime.strptime(rec.mission_start_date, "%Y-%m-%d")
time2 = datetime.datetime.strptime(rec.mission_end_date, "%Y-%m-%d")
week = {}
leave_value = {}
# Compute Number Of Friday And Saturday
for i in range((time2 - time1).days):
day = calendar.day_name[(time1 + datetime.timedelta(days=i+1)).weekday()]
week[day] = week[day] + 1 if day in week else 1
fri = week.get('Friday') if 'Friday' in week else 0 # Result Number 1 Of friday If "Start Date", "End date" --> "02/04/2019", "07/04/2019"
sat = week.get('Saturday') if 'Saturday' in week else 0 # Same thing that Friday, Numbre 1 for Saturday
friandsat = fri + sat # Result 2
rec.days_compensation = friandsat
def get_compensation(self):
friandsat = 0
for rec in self:
if rec.mission_start_date and rec.mission_end_date:
time1 = datetime.datetime.strptime(rec.mission_start_date, "%Y-%m-%d")
time2 = datetime.datetime.strptime(rec.mission_end_date, "%Y-%m-%d")
week = {}
leave_value = {}
# Compute Number Of Friday And Saturday
for i in range((time2 - time1).days):
day = calendar.day_name[(time1 + datetime.timedelta(days=i+1)).weekday()]
week[day] = week[day] + 1 if day in week else 1
fri = week.get('Friday') if 'Friday' in week else 0 # Result Number 1 Of friday If "Start Date", "End date" --> "02/04/2019", "07/04/2019"
sat = week.get('Saturday') if 'Saturday' in week else 0 # Same thing that Friday, Numbre 1 for Saturday
friandsat = fri + sat # Result 2
return friandsat