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

我不明白为什么函数在python中不返回,我的函数计算两个日期之间星期五和星期六的天数,但它不返回

这是我的密码:


您需要为该字段赋值。例如,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