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


Reply via email to