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