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.


Reply via email to