我从Odoo社区参考网站获得了以下部分代码,用于创建生日日历标记
class birthday_report(osv.osv):
_name = "birthday.report"
_auto = False
_columns = {
'name': fields.many2one('hr.employee','Employee', readonly=True),
'dob' : fields.date('Birthday', readonly=True),
}
def init(self, cr):
tools.drop_view_if_exists(cr, 'birthday_report')
cr.execute("""
create or replace view birthday_report as (
select
h.id as id,
h.id as name,
concat(concat(date_part('Year',current_date),'-'),to_char(h.birthday, 'mm-dd')) as dob
from
hr_employee as h
join
resource_resource as r
on
h.resource_id=r.id
where r.active ='t'
)
""")
birthday_report()
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_birthday_report_calendar" model="ir.ui.view">
<field name="name">Employee Birthday</field>
<field name="model">birthday.report</field>
<field name="arch" type="xml">
<calendar string="Birthday" color="name"
date_start="dob"
quick_add="False" avatar_model="hr.employee">
<field name="name"/>
</calendar>
</field>
</record>
<record model="ir.actions.act_window" id="action_birthday_view">
<field name="name">Birthday</field>
<field name="res_model">birthday.report</field>
<field name="view_type">form</field>
<field name="view_mode">calendar</field>
<field name="view_id" eval="view_birthday_report_calendar"/>
<field name="domain">[]</field>
</record>
<menuitem id="menu_birthday" name="Birthday" parent="hr.menu_hr_root" groups="base.group_user"/>
<menuitem id="menu_view_birthday" parent="menu_birthday" action="action_birthday_view" groups="base.group_user"/>
</data>
</openerp>
当我导航到1月或去年12月时出现错误,发生以下错误:
未捕获错误:'2016-'不是正确的日期,日期时间和时间。
我是Odoo中sql查询的新手,任何有此建议的人都会非常感激。谢谢!!
答案 0 :(得分:1)
首先,我建议使用||
而不是concat。这允许你进行多个连接。
date_part('Year',current_date) || '-' || to_char(h.birthday, 'mm-dd')
其次我建议到目前为止,所以
(date_part('Year',current_date) || '-' || to_char(h.birthday, 'mm-dd'))::date
第三,如果你只是使用psql并从视图中选择会发生什么?有错误的日期吗?或者在Python代码的其他地方发生了其他事情?