A problem about "ForeignKey", help!!
Hanjie <lucky.hanjie <at> gmail.com>
2009-04-09 21:44:52 GMT
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):
<at> expose(template="assignment.templates.welcome")
def index(self):
posts = assignment.model.postTable.select()
return dict(posts=posts)
<at> 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 <at> lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss