我正在为OpenERP 7创建一个模块,在创建新合作伙伴时将今天的日期设置为默认值。我已经安装了模块,重新启动了Openerp服务,默认值没有改变。 (我在网站字段中包含了一个“goofball”字段和虚假默认数据,以确保它不是python lambda代码问题。它不是......)这是我在合作伙伴中的代码。吡啶:
from osv import osv, fields
import datetime
class res_partner(osv.osv):
_inherit = 'res.partner'
_columns = {"goofball":fields.char('goofball', size=15)}
_defaults = {
'website': 'www.veppsight.com',
'date': lambda *a: datetime.date.today().strftime('%Y-%m-%d'),
}
未输入网站的默认数据&日期字段和“goofball”字段不是在我在psql中验证的数据库中创建的。我究竟做错了什么?
答案 0 :(得分:10)
从V6.1开始,有一个新功能可以处理今天的日期,称为context_today。
您可以通过以下链接查看背景信息...... http://openerp-expert-framework.71550.n3.nabble.com/Bug-925361-Re-6-1-date-values-that-are-initialized-as-defaults-may-appear-as-quot-off-by-one-day-quoe-td3741270.html
基于此,你可以使用......
_ defaults = {
'date1': fields.date.context_today,
}
此致 -Mario
答案 1 :(得分:2)
导入时间和默认值
_defaults = {
'website': 'www.veppsight.com',
'date': lambda *a: time.strftime('%Y-%m-%d'),
}
答案 2 :(得分:1)
使用以下代码:
from osv import osv, fields
import time
class res_partner(osv.osv):
_inherit = 'res.partner'
_columns = {"goofball":fields.char('goofball', size=15)}
_defaults = {
'website': 'www.veppsight.com',
'date1': time.strftime('%Y-%m-%d'),
}
如果可能的重命名字段名称DATE
以及某些东西。由于日期是POSTGRESQL中的DT
谢谢
答案 3 :(得分:1)
_defaults = {
'date': lambda self,cr,uid,context={}: context.get('date', fields.date.context_today(self,cr,uid,context=context)),
或
'date': lambda self, cr, uid, context={}: context.get('date', time.strftime("%Y-%m-%d %H:%M:%S")),
或
'date' : fields.date.context_today,
}
Lambda是python中的行内或匿名函数。
答案 4 :(得分:0)
这个怎么样:
from osv import osv, fields import time class res_partner(osv.osv): _inherit = 'res.partner' _columns = {"goofball": fields.char('goofball', size=15)} _defaults = { 'website': 'www.veppsight.com', 'date1': lambda *a: time.strftime('%Y-%m-%d'), } res_partner()