if I add it, DB Administration works but I its value is NONE(tilename). Is 
as if I can do this representation on a top-down approach but not the other 
way around.




On Wednesday, July 10, 2013 6:04:08 AM UTC-7, Anthony wrote:
>
> Well, I don't see a "supplier" field in the db.product model.
>
> On Wednesday, July 10, 2013 8:52:04 AM UTC-4, greenpoise wrote:
>>
>> sorry. This is the error I get:
>>
>> File "/home/xyz/Applications/web2py/gluon/sqlhtml.py", line 3122, in __init__
>>     r = represent(field, r, record)
>>   File "/home/xyz/Applications/web2py/gluon/sqlhtml.py", line 66, in 
>> represent
>>     return f(value, record)
>>   File "/home/xyz/Applications/web2py/applications/MOS/models/db_catalog.py" 
>> <http://127.0.0.1:8000/admin/default/edit/MOSAIC_POSx2/models/db_catalog.py>,
>>  line 102, in <lambda>
>>     Field('supptile',represent=lambda id, r: '%s%s'% 
>> (r.supplier.suppliercode,r.product.tilename)),
>> AttributeError: 'Row' object has no attribute 'supplier'
>>
>>
>> On Wednesday, July 10, 2013 5:13:55 AM UTC-7, Anthony wrote:
>>>
>>> Hard to help without knowing what the error is.
>>>
>>> On Wednesday, July 10, 2013 1:35:01 AM UTC-4, greenpoise wrote:
>>>>
>>>> AGh..tilename was in it, I just didnt include it in this thread:
>>>>
>>>>
>>>> db.define_table('supplier',
>>>>    Field('suppliercode'),
>>>>    Field('suppliername'),
>>>>    format='%(suppliercode)s')
>>>> db.supplier.suppliercode.requires = IS_NOT_IN_DB(db,db.supplier.
>>>> suppliercode)
>>>> db.supplier.suppliername.requires = IS_NOT_IN_DB(db,db.supplier.
>>>> suppliername)
>>>>
>>>>
>>>>
>>>> db.define_table('series',
>>>>    Field('supplier','reference supplier'),
>>>>   Field('seriesname'),
>>>>    Field('seriesdescription'),
>>>>    Field('description'))
>>>>
>>>>
>>>> db.define_table('product',
>>>>    Field('series', 'reference series'),
>>>>    Field('supptile',represent=lambda id, r: '%s%s'% (r.supplier.
>>>> suppliercode,r.tilename)),
>>>>    Field('tilename'),
>>>>    Field('description'),
>>>>    Field('conversiontype'),
>>>>    Field('inactive','boolean'))
>>>>
>>>>
>>>> controller function:
>>>>
>>>> grid = SQLFORM 
>>>> <http://127.0.0.1:8000/examples/global/vars/SQLFORM>.grid(db.series,left 
>>>> =[db.series.on(db.series.id==db.product.series),db.supplier.on(db.supplier.id==db.series.supplier)],fields=[db.supplier.suppliercode,db.product.supptile,db.product.tilename],
>>>>  headers = {'supplier.suppliercode': 
>>>> 'SUPPLIERCODE','series.supptile':'ITEMCODE','product.tilename':'REORDER#'})
>>>>
>>>>
>>>>
>>>> As it is, the grid works as I want. I get the supptile which is a 
>>>> concatenation of the suppliercode and tilename. When I go to database 
>>>> administration, which I use, the product table prompts me an error. Agh!!! 
>>>>  Thanks so much Anthony!
>>>>
>>>> **I hope I didnt miss anything**
>>>>
>>>>
>>>>
>>>> On Tuesday, July 9, 2013 10:02:00 PM UTC-7, Anthony wrote:
>>>>>
>>>>> Can you show your new code? So far, all we see is r.product.tilename, 
>>>>> which won't work because r.product is a LazySet object -- you have to do 
>>>>> r.product.select().first().tilename, or something along those lines 
>>>>> (though 
>>>>> that will just give you the tilename of the first product that references 
>>>>> the record). Also, in the models you have shown, there is no tilename 
>>>>> field 
>>>>> in the db.product table.
>>>>>
>>>>> Anthony
>>>>>
>>>>> On Tuesday, July 9, 2013 11:34:27 PM UTC-4, greenpoise wrote:
>>>>>>
>>>>>> I re-opened this as I keep getting the same error. 
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Tuesday, July 9, 2013 4:12:49 PM UTC-7, greenpoise wrote:
>>>>>>>
>>>>>>> I think I got it by reading the recursive select section. THanks!!!
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Tuesday, July 9, 2013 3:55:04 PM UTC-7, Anthony wrote:
>>>>>>>>
>>>>>>>> Would help if you showed your data models. Presumably the 
>>>>>>>> db.product table includes a reference field that references this 
>>>>>>>> table. 
>>>>>>>> That allows you to do a recursive select in reverse (see the last part 
>>>>>>>> of this 
>>>>>>>> section<http://web2py.com/books/default/chapter/29/06#Recursive-selects>).
>>>>>>>>  
>>>>>>>> When you select a record from this table (let's call the record "r"), 
>>>>>>>> then 
>>>>>>>> r.product is a LazySet object that refers to all the records in 
>>>>>>>> db.product 
>>>>>>>> that have a reference to this particular record. You can then use that 
>>>>>>>> as 
>>>>>>>> any DAL Set object. If you need to further filter the set, you can add 
>>>>>>>> a 
>>>>>>>> condition by doing r.product(some_query), and if you want to select 
>>>>>>>> the 
>>>>>>>> records, you can do r.product.select(). Assuming there are potentially 
>>>>>>>> multiple product records that reference a given record in this table, 
>>>>>>>> it's 
>>>>>>>> not clear how you would want to use those records to construct the 
>>>>>>>> "represent" output for the field.
>>>>>>>>
>>>>>>>> Anthony
>>>>>>>>
>>>>>>>> On Tuesday, July 9, 2013 6:32:33 PM UTC-4, greenpoise wrote:
>>>>>>>>>
>>>>>>>>> I am getting this error. My grid works fine but when I try to log 
>>>>>>>>> into the database administration tool, I get this error. Any clue?
>>>>>>>>>
>>>>>>>>> File 
>>>>>>>>> "/home/xxx/Applications/web2py/applications/APPLICACION/models/db_catalog.py"
>>>>>>>>>  
>>>>>>>>> <http://127.0.0.1:8000/admin/default/edit/MOSAIC_POSx2/models/db_catalog.py>,
>>>>>>>>>  line 72, in <lambda>
>>>>>>>>>     Field('supptile',represent=lambda id, r: '%s%s'% 
>>>>>>>>> (r.supplier.suppliercode,r.product.tilename)),
>>>>>>>>> AttributeError: 'LazySet' object has no attribute 'tilename'
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>

-- 

--- 
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to