Sorry, I'm kinda lost in what you're trying to do.  Can you show it in code
or screen shots?

-Jim


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

> There is a grandparent (HumanLanguage), parent (DictionaryType), child
> (Word), relationship.  If I go straight from the grandparent to the child,
> "represent" works.
> (First I click on HumanLangages, then I click on Word)
>
> If I go from the parent to the child, I get this message: <type
> 'exceptions.TypeError'> <lambda>() takes exactly 2 arguments (1 given)
> (First I click on HumanLangages, then I click on DictionaryType, then, I
> click on Word)
>
> If I reduce the number of parms to db.Word.dictionaryTypeID.represent =
> lambda id: db.DictionaryType(id).dictionaryName, then it works if I go from
> the parent to the child, but if I go from the grandparent to the child, I
> get <type 'exceptions.TypeError'> <lambda>() takes exactly 1 argument (2
> given).
>
> If a join was allowed, it would solve the problem but I think they are not
> supported in smartgrid.
>
> Any ideas would be much appreciated,
>
> Thanks,
>
> Alex
>
>
> On Friday, February 22, 2013 5:24:48 AM UTC-8, Jim S wrote:
>
>> 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 <alexg...@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+un...@**googlegroups.com.
>>>>
>>>> For more options, visit 
>>>> https://groups.google.com/**groups/opt_out<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+un...@**googlegroups.com.
>>>
>>> For more options, visit 
>>> https://groups.google.com/**groups/opt_out<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