Does it occur after the definition of db.DictionaryType in your model file?
Sorry for the dumb questions, just going over mistakes I've made in the past... -Jim On Sat, Feb 23, 2013 at 2:09 PM, Alex Glaros <alexgla...@gmail.com> wrote: > db.define_table('Word', > Field('wordName','string'), > Field ('definition', 'string'), > Field('languageID','reference HumanLanguage'), > Field('dictionaryTypeID',*db.DictionaryType*), > Field('wordReferenceModelID','reference WordReferenceModel'), > Field('comments','string'), auth.signature) > > On Sat, Feb 23, 2013 at 12:01 PM, Jim Steil <ato.st...@gmail.com> wrote: > >> >> Can you paste the table definition that choked on you? >> >> -Jim >> >> >> On Sat, Feb 23, 2013 at 1:34 PM, Alex Glaros <alexgla...@gmail.com>wrote: >> >>> web2py doesn't seem to accept that format on my windows version. I get >>> >>> <type 'exceptions.AttributeError'> 'DAL' object has no attribute >>> 'DictionaryType' >>> The error below doesn't come up when there is no data: >>> >>> *<type 'exceptions.TypeError'> <lambda>() takes exactly 2 arguments (1 >>> given)* >>> >>> The represent attribute works if there are two files in play instead of >>> three >>> >>> I created a simplified version and changed every field name in case >>> there was some reserved word problem but it didn't work >>> >>> What I will do is write something similar from scratch with different >>> table and field names. >>> >>> Thanks, >>> >>> Alex >>> >>> On Sat, Feb 23, 2013 at 8:35 AM, Jim S <j...@qlf.com> wrote: >>> >>>> 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>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. >>>>>> >>>>>> 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. >>>> >>>> >>>> >>> >>> -- >>> >>> --- >>> 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 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 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.