Just to be clear, he isn't asking just to remove quotes, but to specify your reference columns as:
db.table_name instead of 'reference table_name' -Jim On Friday, February 22, 2013 7:14:18 PM UTC-6, Alex Glaros wrote: > > 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 > <kylefl...@gmail.com<javascript:> > > 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/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.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. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> >>>>>>> --- >>>>>>> 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. >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> -- >>>>> >>>>> --- >>>>> 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. >>>>> >>>>> >>>>> >>>> >>>> -- >> >> --- >> 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+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.