【发布时间】:2019-08-22 04:21:54
【问题描述】:
我是 Python 的新用户,我遇到了 None 类型的问题,我看了不同的问题,但问题仍然存在。
我的代码正在寻找两个日期之间的星期五和星期六,到目前为止它可以工作,但是当我将两者相加时出现此错误:
"TypeError: + 的不支持的操作数类型: 'NoneType' 和 'NoneType'
我在函数中返回结果后。
这是我的代码:
# -*- coding: utf-8 -*-
import datetime
import calendar
calendar.setfirstweekday(calendar.SUNDAY)
from odoo import models, fields, api
class HrMission(models.Model):
_name = "hr.employee.mission"
_description = "hr mission"
_inherit = "hr.employee.mission"
days_compensation =fields.Float(compute='get_compensation', compstring='Jours de récupération', help="Jours de récupération si la mission contient les jours de repos",
required=True, readonly=True,)
@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') # Result Number 4 Of Friday If "Start Date", "End date" --> "01/01/2017", "31/01/2017"
sat = week.get('Saturday') # Same thing that friday
friandsat = mon + sat # Error ---> "TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'"
rec.days_compensation = friandsat
【问题讨论】:
-
您能告诉我们您遇到的错误,以及显示错误发生位置的堆栈跟踪吗?
-
如果您在谈论通过调用此方法获得的求和结果,那么我敢打赌您的问题是此方法没有返回值。 - 我不清楚你应该返回什么值。
-
我知道,这就是问题所在,我想返回 Fridays 和 Saturdays 的值,但它是 NoneType,请帮帮我
-
哦。对不起。我刚刚注意到您在代码中的评论。从您的代码中我不清楚如何假设 week 将包含键 Friday 和 Saturday。
-
你需要提供一个更完整的例子。我们可以运行的东西,包括导致您看到的问题的示例数据/输入。请查看MCVE