Nick,
Try this:
class Task(SQLObject):
"""
CHANGES:
* RelatedJoin --> SQLRelatedJoin
* added 'createRelatedTable=False' to SQLRelatedJoin
"""
name = UnicodeCol()
users = SQLRelatedJoin('User',
joinColumn='user',
otherColumn='task',
intermediateTable='user_tasks',
createRelatedTable=False)
class User(SQLObject):
"""
CHANGES:
* RelatedJoin --> SQLRelatedJoin
* added 'createRelatedTable=False' to SQLRelatedJoin
"""
...
tasks = SQLRelatedJoin('Task',
joinColumn='task',
otherColumn='user',
intermediateTable='user_tasks',
createRelatedTable=False)
class UserTasks(SQLObject):
"""
CHANGES:
* added 'unique' index.
This will restrict the database from having 2 records
with user_id=1 and task_id=1 for example.
Which is what I think you want.
"""
user = ForeignKey('User')
task = ForeignKey('Task')
priority = FloatCol()
unique = index.DatabaseIndex(user, task, unique=True)
--
Rick
On Thu, 16 Nov 2006, Nick Murdoch wrote:
> Hi,
>
> I'm currently working on a TurboGears project that in its model has the
> standard TurboGears User table, and a table of my own, Task. The idea is
> that each user has a task list, and a task can have multiple Users
> associated with it.
>
> At the moment my model.py looks something like this:
>
> class Task(SQLObject):
> name = UnicodeCol()
> users = RelatedJoin('User', joinColumn='user', otherColumn='task',
> intermediateTable='user_tasks')
>
> class User(SQLObject):
> ...
> tasks = RelatedJoin('Task', joinColumn='task', otherColumn='user',
> intermediateTable='user_tasks')
>
>
> Now, I want to be able to assign each Task a priority, but I want two
> Users to be able to prioritise a Task differently. To me, this would
> mean putting an extra column in the user_tasks table to hold the
> priority for each user/task pair, so I wrote:
>
> class UserTasks(SQLObject):
> user = ForeignKey('User')
> task = ForeignKey('Task')
> priority = FloatCol()
>
> I then ran 'tg-admin sql create' (which I presume calls some SQLObject
> command internally), and it didn't throw up any errors, but when I
> inspected the sqlite database, the extra priority field wasn't included!
>
> sqlite> .tables
> group_permission tg_group user_tasks
> permission tg_user visit
> task user_group visit_identity
>
> sqlite> .schema user_tasks
> CREATE TABLE user_tasks (
> user INT NOT NULL,
> task INT NOT NULL
> );
>
>
> Presumably SQLObject creates the custom joining table first, then it
> gets overwritten with the new auto-generated version?
>
> Any help here would be great; I really need that priority column for
> this project!
>
> Thanks,
>
> Nick Murdoch
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys - and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> sqlobject-discuss mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss
>
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
sqlobject-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss