Hi Rick,
This does seem to work, indeed! Thanks very much!
For the record, the manual way mentioned by Oleg seemed to do the trick
too (and I was half-way through writing up the process for future
reference when I saw your suggestion), and I didn't get the chance to
try Julio's suggestion.
Thanks again,
Nick
Rick Flosi wrote:
> 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
-------------------------------------------------------------------------
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