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
>>>>
>>>
>>

Reply via email to