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.