thanks for giving it a shot but depending upon whether I use quotes or not, either the data column disappears from the web page or I get errors
On Fri, Feb 22, 2013 at 1:47 PM, Kyle Flanagan <kyleflana...@gmail.com>wrote: > Have you tried adding a format to your tables and defining your tables > using objects instead of 'reference...'? > > I'm no web2py expert by any means, but I had a similar situation and when > I changed the reference for my foreign id to db.other_table instead of > 'reference other_table,' the format defined for that table was used instead > of the id. > > Something like this: > db.define_table('HumanLanguage', > Field('languageName','string'), > Field('forumLocations','string'), > > Field('comments','string'), > > format = '%(languageName)s'), # define a format > auth.signature) > db.HumanLanguage.languageName.requires = IS_NOT_EMPTY() > > ## > ## Define DictionaryReferenceModel and WordReferenceModel above here > ## DictionaryReferenceModel, WordReferenceModel should have a format > ## > > > ## 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',db.HumanLanguage ), # changed to object > Field('DictionaryReferenceModelID', db.DictionaryReferenceModel), # > changed to object > format = '%(dictionaryName)s', # define format > > 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' > )) > > > db.define_table('Word', > > Field('wordName','string'), > Field ('definition','string'), > Field('languageID', db.HumanLanguage ), # changed to object > Field('dictionaryTypeID',db.DictionaryType), # changed to object > Field('wordReferenceModelID',db.WordReferenceModel), # changed to object > > 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'))) > > > > > > > > On Friday, February 22, 2013 2:48:19 PM UTC-6, Alex Glaros wrote: >> >> thanks for offering to take a look. >> >> Screen shots here: https://docs.google.com/**document/d/** >> 1e517YRN8FK08vqsVWmp1UuZ0LLevC**NlkrhWyCkBQ7uQ/edit?usp=**sharing<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>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.**repre**sent = 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'),**Fiel**d('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('**diction**aryTypeID','reference >>>>>>>> DictionaryType'),Field('**wordRe**ferenceModelID','**reference >>>>>>>> WordReferenceModel'), Field('comments','string'), auth.signature) >>>>>>>> db.Word.languageID.requires = IS_IN_DB(db, 'HumanLanguage.id', >>>>>>>> '%(languageName)s',zero=T('**cho**ose one')) >>>>>>>> db.Word.dictionaryTypeID.**requi**res = IS_IN_DB(db, >>>>>>>> 'DictionaryType.id', '%(dictionaryName)s',zero=T('**c**hoose one')) >>>>>>>> db.Word.wordName.requires = IS_NOT_EMPTY() >>>>>>>> db.Word.wordReferenceModelID.**r**equires = >>>>>>>> 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('**WordReference**Model',Field('**wordID','**reference >>>>>>>> Word'),Field('**dictionaryTypeID**','reference DictionaryType'), >>>>>>>> Field('picture', 'upload', default=''),Field('comments','****string'), >>>>>>>> auth.signature) >>>>>>>> db.WordReferenceModel.wordID.**r**equires = IS_NOT_EMPTY() >>>>>>>> db.WordReferenceModel.wordID.**r**equires = IS_IN_DB(db, >>>>>>>> 'Word.id', '%(wordName)s',zero=T('choose one')) >>>>>>>> db.WordReferenceModel.**dictiona**ryTypeID.requires = IS_IN_DB(db, >>>>>>>> 'DictionaryType.id', '%(dictionaryName)s',zero=T('**c**hoose one')) >>>>>>>> ## dictionary_type_query = (db.DictionaryType.**dictionaryN** >>>>>>>> ame=='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('**DictionaryTyp**e',Field('**dictionaryName','** >>>>>>>> string'),**Field('comments','**string'), >>>>>>>> Field('languageID','reference HumanLanguage'), >>>>>>>> Field('**DictionaryReferenceMode**lID', 'reference >>>>>>>> DictionaryReferenceModel'), auth.signature) >>>>>>>> db.DictionaryType.**dictionaryNa**me.requires = IS_NOT_EMPTY() >>>>>>>> db.DictionaryType.languageID.**r**equires = IS_IN_DB(db, >>>>>>>> 'HumanLanguage.id', '%(languageName)s',zero=T('**cho**ose one')) >>>>>>>> db.DictionaryType.**DictionaryRe**ferenceModelID.**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('**DictionaryRef**erenceModel', >>>>>>>> Field('DictionaryTypeID','**refe**rence DictionaryType'),Field('** >>>>>>>> commen**ts','string'), >>>>>>>> auth.signature) >>>>>>>> db.DictionaryReferenceModel.**Di**ctionaryTypeID.requires = >>>>>>>> IS_NOT_EMPTY() >>>>>>>> >>>>>>>> db.define_table('Synonyms',**Fie**ld('synonymName','string'),**Fie* >>>>>>>> *ld('wordID','reference Word'),Field('comments','**strin**g'), >>>>>>>> auth.signature) >>>>>>>> db.Synonyms.synonymName.**requir**es = 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('**PublicComment**s',Field('wordID'**,'reference >>>>>>>> Word'),Field('comments','**strin**g'), >>>>>>>> auth.signature) >>>>>>>> db.PublicComments.comments.**req**uires = IS_NOT_EMPTY() >>>>>>>> db.PublicComments.wordID.**requi**res = IS_NOT_EMPTY() >>>>>>>> db.PublicComments.wordID.**requi**res = 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.**HumanLang**uage, >>>>>>>>>> linked_tables=['Word','**Diction**aryType'], fields = [ >>>>>>>>>> db.HumanLanguage.id, db.HumanLanguage.languageName, db.Word.id, >>>>>>>>>> db.Word.wordName, db.Word.definition, db.DictionaryType.** >>>>>>>>>> dictionaryNa**me, >>>>>>>>>> >>>>>>>>>> *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/**grou**ps/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/**grou**ps/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 a topic in the > Google Groups "web2py-users" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/web2py/va56WuVvbqI/unsubscribe?hl=en. > To unsubscribe from this group and all its topics, 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.