Depends on whether or not you want that behavior globally or not.
 Remember, your model gets executed on every request.  So, if you want that
behavior globally I'd put it there.  If you just need it for one instance,
put it in the controller.

-Jim


On Fri, Feb 22, 2013 at 12:20 AM, Alex Glaros <alexgla...@gmail.com> wrote:

> It worked Jim
>
> thanks so much for going through the process of writing and testing the
> code.
>
> I'm new to web2py, is there any preference as to where that statement
> goes: controller or model?
>
> much appreciated,
>
> Alex
>
>
> On Thu, Feb 21, 2013 at 8:31 PM, Jim S <j...@qlf.com> wrote:
>
>> Add this line before creating your smartgrid:
>>
>> db.Word.dictionaryTypeID.represent = lambda s,r: s.dictionaryName
>>
>> Does that help?  It worked for the trimmed down model I made...
>>
>> -Jim
>>
>>
>> On Thursday, February 21, 2013 9:16:39 PM UTC-6, Alex Glaros wrote:
>>>
>>> db.define_table('HumanLanguage',Field('languageName','string'),Field('forumLocations','string'),Field('comments','string'),
>>> auth.signature)
>>> db.HumanLanguage.languageName.requires = IS_NOT_EMPTY()
>>>
>>> db.define_table('Word',Field('wordName','string'), Field ('definition',
>>> 'string'), Field('languageID','reference
>>> HumanLanguage'),Field('dictionaryTypeID','reference
>>> DictionaryType'),Field('wordReferenceModelID','reference
>>> WordReferenceModel'), Field('comments','string'), auth.signature)
>>> db.Word.languageID.requires = IS_IN_DB(db, 'HumanLanguage.id',
>>> '%(languageName)s',zero=T('choose one'))
>>> db.Word.dictionaryTypeID.requires = IS_IN_DB(db, 'DictionaryType.id',
>>> '%(dictionaryName)s',zero=T('choose one'))
>>> db.Word.wordName.requires = IS_NOT_EMPTY()
>>> db.Word.wordReferenceModelID.requires = IS_NULL_OR(IS_IN_DB(db,
>>> 'WordReferenceModel.id', '%(wordID)s',zero=T('choose one')))
>>>
>>> ## Uses English language as standard connector between all languages.
>>> WordID below points to the English version of the word that is the
>>> standard. The reason "Is_Null" clause is there is because the first time
>>> the word is encountered, it won't be in the English dictionary
>>> db.define_table('WordReferenceModel',Field('wordID','reference
>>> Word'),Field('dictionaryTypeID','reference DictionaryType'),
>>> Field('picture', 'upload', default=''),Field('comments','string'),
>>> auth.signature)
>>> db.WordReferenceModel.wordID.requires = IS_NOT_EMPTY()
>>> db.WordReferenceModel.wordID.requires = IS_IN_DB(db, 'Word.id',
>>> '%(wordName)s',zero=T('choose one'))
>>> db.WordReferenceModel.dictionaryTypeID.requires = IS_IN_DB(db,
>>> 'DictionaryType.id', '%(dictionaryName)s',zero=T('choose one'))
>>> ## dictionary_type_query = (db.DictionaryType.dictionaryName=='English')
>>> ## /* need this too for wordReferenceModel */
>>>
>>> ## Dictionary type means what category of dictionary is it? Medical,
>>> computer,etc.  There is one for each language.
>>> db.define_table('DictionaryType',Field('dictionaryName','string'),Field('comments','string'),
>>> Field('languageID','reference HumanLanguage'),
>>>     Field('DictionaryReferenceModelID', 'reference
>>> DictionaryReferenceModel'), auth.signature)
>>> db.DictionaryType.dictionaryName.requires = IS_NOT_EMPTY()
>>> db.DictionaryType.languageID.requires = IS_IN_DB(db, 'HumanLanguage.id',
>>> '%(languageName)s',zero=T('choose one'))
>>> db.DictionaryType.DictionaryReferenceModelID.requires = IS_IN_DB(db,
>>> 'DictionaryReferenceModel.id', '%(DictionaryTypeID)s',zero=T('choose one'))
>>>
>>> ## Uses English dictionary type as standard connector between all
>>> dictionary types. DictionaryType.id points to the English DictionaryType.id
>>> db.define_table('DictionaryReferenceModel',
>>> Field('DictionaryTypeID','reference
>>> DictionaryType'),Field('comments','string'),
>>>     auth.signature)
>>> db.DictionaryReferenceModel.DictionaryTypeID.requires = IS_NOT_EMPTY()
>>>
>>> db.define_table('Synonyms',Field('synonymName','string'),Field('wordID','reference
>>> Word'),Field('comments','string'),
>>>     auth.signature)
>>> db.Synonyms.synonymName.requires = IS_NOT_EMPTY()
>>> db.Synonyms.wordID.requires = IS_NOT_EMPTY()
>>> db.Synonyms.wordID.requires = IS_IN_DB(db, 'Word.id',
>>> '%(Word)s',zero=T('choose one'))
>>>
>>> db.define_table('PublicComments',Field('wordID','reference
>>> Word'),Field('comments','string'),
>>>     auth.signature)
>>> db.PublicComments.comments.requires = IS_NOT_EMPTY()
>>> db.PublicComments.wordID.requires = IS_NOT_EMPTY()
>>> db.PublicComments.wordID.requires = IS_IN_DB(db, 'Word.id',
>>> '%(wordName)s',zero=T('choose one'))
>>>
>>>
>>> On Thursday, February 21, 2013 6:10:56 PM UTC-8, Jim S wrote:
>>>>
>>>> Can you show the model code?
>>>>
>>>> -Jim
>>>>
>>>> On Thursday, February 21, 2013 7:35:52 PM UTC-6, Alex Glaros wrote:
>>>>>
>>>>> Instead of *db.Word.dictionaryTypeID* displaying (which is a foreign
>>>>> key in db.Word), I’d like a value from the foreign table to appear, i.e.,
>>>>> DictionaryType. dictionaryName.
>>>>>
>>>>>
>>>>> In the example below, when user cascades down to the Word table, it
>>>>> only shows db.Word.dictionaryTypeID but I’d like to add the corresponding
>>>>> DictionaryType. dictionaryName value to it.
>>>>>
>>>>>
>>>>> def search_lang():
>>>>>
>>>>>    grid = SQLFORM.smartgrid(db.HumanLanguage,
>>>>> linked_tables=['Word','DictionaryType'], fields = [db.HumanLanguage.id,
>>>>> db.HumanLanguage.languageName, db.Word.id, db.Word.wordName,
>>>>> db.Word.definition, db.DictionaryType.dictionaryName,
>>>>>
>>>>>        *db.Word.dictionaryTypeID*],
>>>>>
>>>>>        user_signature=False)
>>>>>
>>>>>    return dict(grid=grid)
>>>>>
>>>>>
>>>>> id<http://127.0.0.1:8000/tech_dictionary/default/search_lang/HumanLanguage/Word.languageID/1?keywords=&order=Word.id>
>>>>>   
>>>>> Wordname<http://127.0.0.1:8000/tech_dictionary/default/search_lang/HumanLanguage/Word.languageID/1?keywords=&order=Word.wordName>
>>>>>   
>>>>> Definition<http://127.0.0.1:8000/tech_dictionary/default/search_lang/HumanLanguage/Word.languageID/1?keywords=&order=Word.definition>
>>>>>   
>>>>> Dictionarytypeid<http://127.0.0.1:8000/tech_dictionary/default/search_lang/HumanLanguage/Word.languageID/1?keywords=&order=Word.dictionaryTypeID>
>>>>> 1 beaker    glass jar     1
>>>>>
>>>>>
>>>>> Want to replace the "1" under Dictionarytypeid with value from foreign
>>>>> table.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Alex Glaros
>>>>>
>>>>  --
>>
>> ---
>> 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/groups/opt_out.
>>
>>
>>
>
>  --
>
> ---
> 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/groups/opt_out.
>
>
>

-- 

--- 
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/groups/opt_out.


Reply via email to