Hi any man:
please help me, I have been confused by this problem for whole day.
I have two table and I want to use a foreignKey connect then together.
My coding is following:
class postTable(SQLObject):
title = UnicodeCol(length=50)
content = UnicodeCol()
comments=MultipleJoin('commentTable')
class commentTable(SQLObject):
post=ForeignKey('postTable')
authorName=UnicodeCol(length=255,notNull=False)
content=UnicodeCol()
Then I input "describe table post_table"
find the structure of post_table only content : id, title,content.
I can use like q.id, q.title, q.content.
But, when I want to use q.comment, the error arise:
I waste a whole day on this issue, please help me, I really need to use
q.comment.
how to solve it.
Thank you in advance
My problem detail(I am studying how to use turbogears):
---------------------------model.py---------------------------------
class postTable(SQLObject):
title = UnicodeCol(length=50)
content = UnicodeCol()
postDate = DateTimeCol(default=datetime.now())
isPublished= BoolCol(default=False)
comments=MultipleJoin('commentTable')
def _get_html_content(self):
return publish_parts(self.content,
writer_name="html")["html_body"]
html_content=property(_get_html_content)
class commentTable(SQLObject):
post=ForeignKey('postTable')
authorName=UnicodeCol(length=255,notNull=False)
authorEmail=StringCol(length=255,notNull=False)
authorUrl=StringCol(length=255,notNull=False)
commentDate=DateTimeCol(default=datetime.now())
content=UnicodeCol()
------------------------------control.py-------------------------------------------
class Root(controllers.RootController):
@expose(template="assignment.templates.welcome")
def index(self):
posts = assignment.model.postTable.select()
return dict(posts=posts)
@expose(template="assignment.templates.post")
def post(self,id):
p=assignment.model.postTable.get(int(id))
return dict(post=p)
----------------------------------welcome.kid----------------------------------------
<body>
<div id = "posts">
<div py:for="post in posts" id="post_${post.id}">
<h2 py:content="post.title">Post title here</h2>
<div class="postmeta">
Posted on
<span class="postdate"
py:content="post.postDate">01/01/01</span>
</div>
<div class="content" py:content="XML(post.html_content)">
This is where your post's content is displayed.
</div>
<div class="comments">
<div py:for="comment in post.comments" id="comment_${
comment.id}"> ##problem should be here
<div class="commentmeta">
Comment by
<span py:if="comment.authorUrl" py:strip=''>
<a href="${comment.authorUrl}"
py:content="comment.authorName">Author with link</a>
</span>
<span py:if="not comment.authorUrl" py:strip=''
py:content="comment.authorName">
Author without link
</span>
on
<span
py:content="comment.commentDate">01/01/01</span>
</div>
</div>
</div>
<div class="content" py:content="comment.content">
Comment content here.
</div>
</div>
</div>
</body>
--------------------------------------------trac-------------------------------------------------
Page handler: <bound method Root.index of <assignment.controllers.Root
object at 0x019E90F0>>
Traceback (most recent call last):
File
"c:\python25\lib\site-packages\cherrypy-2.3.0-py2.5.egg\cherrypy\_cphttptools.py",
line 121, in _run
self.main()
File
"c:\python25\lib\site-packages\cherrypy-2.3.0-py2.5.egg\cherrypy\_cphttptools.py",
line 264, in main
body = page_handler(*virtual_path, **self.params)
File "<string>", line 3, in index
File
"c:\python25\lib\site-packages\TurboGears-1.0.8-py2.5.egg\turbogears\controllers.py",
line 360, in expose
*args, **kw)
File "<string>", line 5, in run_with_transaction
File
"c:\python25\lib\site-packages\TurboGears-1.0.8-py2.5.egg\turbogears\database.py",
line 359, in so_rwt
retval = func(*args, **kw)
File "<string>", line 5, in _expose
File
"c:\python25\lib\site-packages\TurboGears-1.0.8-py2.5.egg\turbogears\controllers.py",
line 373, in <lambda>
mapping, fragment, args, kw)))
File
"c:\python25\lib\site-packages\TurboGears-1.0.8-py2.5.egg\turbogears\controllers.py",
line 423, in _execute_func
return _process_output(output, template, format, content_type,
mapping, fragment)
File
"c:\python25\lib\site-packages\TurboGears-1.0.8-py2.5.egg\turbogears\controllers.py",
line 88, in _process_output
fragment=fragment)
File
"c:\python25\lib\site-packages\TurboGears-1.0.8-py2.5.egg\turbogears\view\base.py",
line 159, in render
return engine.render(**kw)
File
"c:\python25\lib\site-packages\TurboKid-1.0.4-py2.5.egg\turbokid\kidsupport.py",
line 206, in render
output=output, format=format)
File "c:\python25\lib\site-packages\kid-0.9.6-py2.5.egg\kid\__init__.py",
line 301, in serialize
raise_template_error(module=self.__module__)
File "c:\python25\lib\site-packages\kid-0.9.6-py2.5.egg\kid\__init__.py",
line 299, in serialize
return serializer.serialize(self, encoding, fragment, format)
File "c:\python25\lib\site-packages\kid-0.9.6-py2.5.egg\kid\serialization.py",
line 107, in serialize
text = ''.join(self.generate(stream, encoding, fragment, format))
File "c:\python25\lib\site-packages\kid-0.9.6-py2.5.egg\kid\serialization.py",
line 629, in generate
for ev, item in self.apply_filters(stream, format):
File "c:\python25\lib\site-packages\kid-0.9.6-py2.5.egg\kid\serialization.py",
line 165, in format_stream
for ev, item in stream:
File "c:\python25\lib\site-packages\kid-0.9.6-py2.5.egg\kid\parser.py",
line 221, in _coalesce
for ev, item in stream:
File "c:\python25\lib\site-packages\kid-0.9.6-py2.5.egg\kid\serialization.py",
line 477, in inject_meta_tags
for ev, item in stream:
File "c:\python25\lib\site-packages\kid-0.9.6-py2.5.egg\kid\parser.py",
line 179, in _track
for p in stream:
File "c:\python25\lib\site-packages\kid-0.9.6-py2.5.egg\kid\filter.py",
line 32, in apply_matches
item = stream.expand()
File "c:\python25\lib\site-packages\kid-0.9.6-py2.5.egg\kid\parser.py",
line 108, in expand
for ev, item in self._iter:
File "c:\python25\lib\site-packages\kid-0.9.6-py2.5.egg\kid\parser.py",
line 179, in _track
for p in stream:
File "c:\python25\lib\site-packages\kid-0.9.6-py2.5.egg\kid\parser.py",
line 221, in _coalesce
for ev, item in stream:
File "C:\Documents and
Settings\hanjie\assignment\assignment\templates\welcome.py", line 109,
in _pull
File "<string>", line 1, in <lambda>
File
"c:\python25\lib\site-packages\SQLObject-0.10.4-py2.5.egg\sqlobject\joins.py",
line 144, in performJoin
inst.id)
File
"c:\python25\lib\site-packages\SQLObject-0.10.4-py2.5.egg\sqlobject\dbconnection.py",
line 547, in _SO_selectJoin
self.sqlrepr(value)))
File
"c:\python25\lib\site-packages\SQLObject-0.10.4-py2.5.egg\sqlobject\dbconnection.py",
line 696, in queryAll
return self._dbConnection._queryAll(self._connection, s)
File
"c:\python25\lib\site-packages\SQLObject-0.10.4-py2.5.egg\sqlobject\dbconnection.py",
line 353, in _queryAll
self._executeRetry(conn, c, s)
File
"c:\python25\lib\site-packages\SQLObject-0.10.4-py2.5.egg\sqlobject\mysql\mysqlconnection.py",
line 117, in _executeRetry
raise OperationalError(ErrorMessage(e))
OperationalError: Unknown column 'post_table_id' in 'where clause'
Error location in template file 'C:\\Documents and
Settings\\hanjie\\assignment\\assignment\\templates\\welcome.kid'
between line 19, column 3 and line 20, column 4:
<div class="comments">
------------------------------------------------------------------------------
This SF.net email is sponsored by:
High Quality Requirements in a Collaborative Environment.
Download a free trial of Rational Requirements Composer Now!
http://p.sf.net/sfu/www-ibm-com
_______________________________________________
sqlobject-discuss mailing list
sqlobject-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss