I am trying to use a datetime type in my database. I have the following
table definition.
db.define_table(
'post',
Field('author',db.auth_user),
Field('PostDate','datetime',requires=IS_DATETIME(format='%d/%m/%Y
%H:%M:%S'),default=request.now),
Field('title',requires=IS_NOT_EMPTY()),
Field('body','text',requires=IS_NOT_EMPTY()),
format='%(title)s')
When I try to fill in a form, I get the correct calendar format but when I
submit the form I get an error (See below). If I use just the date format
all is well and I can create new posts. What am I doing wrong?
Simon
TRACEBACK
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Traceback (most recent call last):
File "/home/simon/web2py/gluon/restricted.py", line 205, in restricted
exec ccode in environment
File "/home/simon/web2py/applications/blog/controllers/post.py"
<http://localhost:8000/admin/default/edit/blog/controllers/post.py>,
line 18, in <module>
File "/home/simon/web2py/gluon/globals.py", line 173, in <lambda>
self._caller = lambda f: f()
File "/home/simon/web2py/gluon/tools.py", line 2575, in f
return action(*a, **b)
File "/home/simon/web2py/applications/blog/controllers/post.py"
<http://localhost:8000/admin/default/edit/blog/controllers/post.py>,
line 12, in new_post
posts = get_posts()
File "/home/simon/web2py/applications/blog/controllers/post.py"
<http://localhost:8000/admin/default/edit/blog/controllers/post.py>,
line 16, in get_posts
return db().select(db.post.ALL)
File "/home/simon/web2py/gluon/dal.py", line 7578, in select
return adapter.select(self.query,fields,attributes)
File "/home/simon/web2py/gluon/dal.py", line 1315, in select
rows = response(sql)
File "/home/simon/web2py/gluon/dal.py", line 1305, in response
self.execute(sql)
File "/home/simon/web2py/gluon/dal.py", line 1392, in execute
return self.log_execute(*a, **b)
File "/home/simon/web2py/gluon/dal.py", line 1386, in log_execute
ret = self.cursor.execute(*a, **b)
File "/usr/lib/python2.7/sqlite3/dbapi2.py", line 63, in convert_date
return datetime.date(*map(int, val.split("-")))
ValueError: invalid literal for int() with base 10: '19 21:00:28'
IN FILE: /HOME/SIMON/WEB2PY/APPLICATIONS/BLOG/CONTROLLERS/POST.PY
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
# coding: utf8
# try something like
def index():
posts = db().select(db.post.ALL)
return dict(title="Blog Posts",posts=posts)
@auth.requires_login()
def new_post():
form = SQLFORM <http://localhost:8000/examples/global/vars/SQLFORM>(db.post)
if form.process().accepted:
response
<http://localhost:8000/examples/global/vars/response>.flash = "New
post saved"
posts = get_posts()
return dict(posts=posts,form=form)
def get_posts():
return db().select(db.post.ALL)
response <http://localhost:8000/examples/global/vars/response>._vars=response
<http://localhost:8000/examples/global/vars/response>._caller(new_post)
--