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 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.