I just did this and it works great. The format attribute was already
there, but set to f_itemtype. I just didn't realize what it was there
for. Now I understand.
Thanks for the help.
Bill Lugg
On Thursday, October 29, 2015 at 5:55:57 PM UTC-6, Anthony wrote:
>
> And you can make things even easier by specifying the "format" attribute
> of the t_itemtypes table, which will give you a default IS_IN_DB validator
> (as well as a default "represent" attribute) on any fields that reference
> the table:
>
> db.define_table('t_itemtypes',
> Field('f_itemtypedesc_string', 'string'),
> format='%(f_itemtypedesc_string)s')
>
> db.define_table('t_items',
> Field('f_itemname_string', type='string', notnull=True, label=T(
> 'ItemName')),
> Field('f_itemtype', type='reference t_itemtypes', label=T('ItemType'))
> )
>
> Anthony
>
> On Saturday, October 24, 2015 at 11:01:40 PM UTC-4, DenesL wrote:
>>
>>
>> The second argument of IS_IN_DB should be the key to the reference.
>> And the third should be a format string to represent that key.
>>
>> So your models should look something like
>> db.define_table('t_itemtypes',
>> Field('f_itemtypedesc_string', 'string'),
>> )
>> db.define_table('t_items',
>> Field('f_itemname_string', type='string', notnull=True, label=T(
>> 'ItemName')),
>> Field('f_itemtype', type='reference t_itemtypes', label=T('ItemType'
>> )),
>> requires=IS_IN_DB(db, 't_itemtypes.id',
>> '%(f_itemtypedesc_string)s')
>> )
>>
>>
>>
>> On Saturday, October 24, 2015 at 8:31:27 PM UTC-4, Bill Lugg wrote:
>>>
>>> I am vary new to Web2py and am very impressed with what I see so far. I
>>> come from a MS Access background and am looking for an easy way to develop
>>> small db applications in similar fashion and offering some of the same
>>> features that are offered in Access, but without the proprietary chains
>>> that MS imposes.
>>>
>>> I've been experimenting with a simple inventory app and I have a
>>> situation where I have some lookup tables that I want to reference in my
>>> main item form. In my first attempt, the lookup table contains an integer
>>> item type and a string item type description. I'd like the main form to
>>> display the descriptions, but store either a link or a copy of the integer
>>> item type in the items table (at this point I'm not too picky). FWIW, I
>>> used the wizard to generat the application to start.
>>>
>>> Here's the code as I modified it to display the item type description in
>>> the items form:
>>>
>>> db.define_table('t_items',
>>> Field('f_itemname_string', type='string', notnull=True,
>>> label=T('Itemname String')),
>>> Field('f_itemtype', type='reference t_itemtypes',
>>> requires=IS_IN_DB(db, 't_itemtypes.f_itemtype',
>>> 't_itemtypes.f_itemtypedesc_string'),
>>> label=T('Itemtype')),
>>>
>>>
>>> This works, but when I insert a record I get the following error:
>>> e IntegrityError('FOREIGN KEY constraint failed',)
>>>
>>> Looking at the arguments up the stack a bit, it appears to be trying to
>>> put an integer in for the item type so I'm a little stumped as to what
>>> might be wrong. I wonder if someone might be able to point me in the right
>>> direction as I will want to do this with a couple of other fields as well.
>>>
>>> In addition, I have a couple of integer fields that I want to make a
>>> fixed list from 1 to 4, inclusive. I was going to use the
>>> requires=IS_IN_SET construct for this; am I headed in the right direction?
>>>
>>> Thanks for the help with this.
>>>
>>> Bill Lugg
>>>
>>
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.