Hi there.
Web2py has some cool field types called "list:string", "list:integer" and 
"list:reference table". Check them here:
http://www.web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#Field-types

In your case, you could avoid the creation of the third table with 
*list:reference 
table*, for example, in your db.py:

db.define_table('skill', Field('name'))

db.define_table('worker',\
    Field('name'),\
    Field('skills','list:reference skill'))


Then you can do things like:

skill_1 = db.skill.insert(name='coding in python')
skill_2 = db.skill.insert(name='making a cake')
skill_3 = db.skill.insert(name='writing a song')

db.worker.insert(name='John', skills=[skill_1, skill_2])
db.worker.insert(name='Paul', skills=[skill_3])
db.worker.insert(name='Richard', skills=[skill_2, skill_3])

# search which workers have skill_2:
have_skill_3 = db(db.worker.skills.contains(skill_2)).select()


The list:reference field will be rendered as a select with multiple=True.
You can always write your own widget to use other stuff, like checkboxes.

Look for "list:reference" in this group, you will lots of posts about it. 
Hope it helps!



El jueves, 6 de agosto de 2015, 22:51:53 (UTC-3), Yebach escribió:
>
> Hello
>
> How to solve the problem of one to many relationship:
>
> Lets say I have a worker that has multiple skills. How to set up SQLFORM 
> to add as many skills to the worker as possible.
>
> So skills in one table workers in another.I guess a third table will be 
> needed
>
> Thank you
>
> best regards
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to