thanks for offering to take a look.  

Screen shots 
here: 
https://docs.google.com/document/d/1e517YRN8FK08vqsVWmp1UuZ0LLevCNlkrhWyCkBQ7uQ/edit?usp=sharing

Alex

On Friday, February 22, 2013 12:16:39 PM UTC-8, Jim S wrote:
>
> 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 <alexg...@gmail.com<javascript:>
> > 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+un...@googlegroups.com <javascript:>.
>> 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