python - 根据给定日期获取日期名称
问题描述
我想根据从字段中选择的日期获取日期名称。我有如下代码:
from datetime import datetime, date
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
import calendar
class HrPublicHolidayHolidays(models.Model):
_name = 'hr.public.holiday.holidays'
_description = 'Public Holidays Dates'
name = fields.Char('Holiday Name', required=True)
date = fields.Date('Holiday Date', required=True)
date_day = fields.Char('Day')
year_id = fields.Many2one('hr.public.holiday', 'Calendar Year', required=True)
variable = fields.Boolean('Date may change')
@api.onchange('date')
def _get_day_of_date(self):
for r in self:
selected = fields.Datetime.from_string(r.date)
r.date_day = calendar.day_name[selected.weekday()]
所以基本上代码会运行,但错误只是不断显示,我不知道为什么。
解决方案
首先,默认获取当前日期,例如:
date = fields.Date(string='Date', default=fields.Date.context_today, required=True)
之后编写下面的函数来获取当天的名称
@api.multi
@api.depends('date')
def _get_day(self):
self.day = self.date and (datetime.strptime(self.date, '%Y-%m-%d').date()).strftime('%A') or ''