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)

-- 



Reply via email to