Thank you again David, I shall give it a go.
Chris On Sat, Apr 14, 2012 at 10:29 PM, villas <villa...@gmail.com> wrote: > Yes, it would store the ids of the regions between vertical bars, > something like this: |4|7|23|. So say you are looking for the house-types > in China (which is id = 7). It would be something like this: > > if you already have the record id no.7, then just this: > houses = db(db.house_types.regions.contains('|7|')).select() > > Or, you might have the find the record no. first: > china_rec = db(db.regions.name == 'China').select(db.regions.id).first() > houses = db(db.house_types.regions.contains('|'+str(china_rec.id > )+'|')).select() > > As long as your requirements are not too complex it seems to work well. > See also the book. DAL chapter, search for list:reference. > > Regards, D > > On Saturday, 14 April 2012 21:27:34 UTC+1, leftcase wrote: > >> Hi David, >> >> Thanks for your reply. >> >> I did come across the list:reference option while trying to figure this >> out. I couldn't figure this out though: >> >> Say I add the following to my house-type table: >> >> Field('regions', 'list:reference region') >> >> If I generate a form using SQLFORM, it presents me with a multiselect >> region option where I can select as many regions as I need. Reading around, >> it seems that the region field would then store something like this for >> instance: >> >> 'england', 'france', 'US', 'china' >> >> How do I then create a query to show all house-type records with a region >> of 'china' for instance? >> >> I'm not an experienced user of development frameworks like this. Is it >> usually this difficult to accomplish this kind of thing? Seems to me it >> would be a pretty common requirement? >> >> Thanks in advance, :-) >> >> Chris >> >> On Sat, Apr 14, 2012 at 8:52 PM, villas wrote: >> >>> I would just mention that if you only have a few regions/housetypes, >>> you might consider de-normalising the data and using list:reference and >>> work with the jQuery.multiselect (if you have any problems with that, you >>> might like to read my other thread on the topic). >>> Best regards, David >>> >>> On Saturday, 14 April 2012 18:31:58 UTC+1, leftcase wrote: >>>> >>>> Hi all, >>>> >>>> I'm pretty new to web2py and web app development and I've spend some >>>> time trying to figure out the best way to do this. >>>> >>>> I have two tables, house-types and regions. A house-type can exist in >>>> many regions, and a region can have many house types: >>>> >>>> db.define_table( >>>> 'region', >>>> Field('name', 'string', length=512, required=True), >>>> format = '%(name)s') >>>> >>>> db.define_table( >>>> 'house-type', >>>> Field('title', 'string', length=512), #title of the newbuild >>>> property listing >>>> Field('vendor',db.vendor, required=True), >>>> Field('bedrooms', 'integer'), >>>> Field('price', 'double',required=True), >>>> Field('description', 'text',length=65536, required=True), >>>> Field('live', 'boolean', default=False) >>>> ) >>>> >>>> If I understand correctly, in order to create the many-to-many >>>> relationship I should create a junction table like the following: >>>> >>>> db.define_table( >>>> 'houses_and_regions', >>>> Field('house', db.house-type), >>>> Field('region', db.region)) >>>> >>>> And then I should use SQLFORM to construct a form which updates both >>>> house-type and houses_and_region tables when I create or modify a new >>>> house. >>>> >>>> What I'm struggling with is how to create a form which allows me to >>>> select multiple regions for a house. I wondered if anyone could give me any >>>> examples? >>>> >>>> Thanks in advance! >>>> >>>> Chris >>>> >>> >>