I'm currently attempting to write a web2py application to keep track of 
servicing at the shop where I work as a mechanic.  This is my first 
experience at web2py, so please excuse me if the answer to this is obvious.

The problem that I have right now is how objects that are built up from 
nested tables are displayed.  That's probably a poor way of describing it, 
so I'll demonstrate.  Here's a simplified version of what I'm trying to do:

db.define_table("test_person",
                Field("fname",
                      requires=IS_NOT_EMPTY()),
                Field("lname",
                      requires=IS_NOT_EMPTY()),
                format = "%(fname)s %(lname)s")

db.define_table("test_manufacturer",
                Field("name"),
                format = "%(name)s")

db.define_table("test_model",
                Field("manufacturer",
                      requires=(IS_IN_DB(db, db.test_manufacturer))),
                Field("model_year"),
                Field("model"),
                format = "%(model_year)s %(name)s")

db.define_table("test_vehicle",
                Field("vehicle_owner",
                      requires=IS_IN_DB(db, db.test_person)),
                Field("model",
                      requires=IS_IN_DB(db, db.test_model)),
                Field("vin",
                      label="VIN"),
                format = "%(vehicle_owner)s's %(model)s")


So if I go to the admin interface and try to add a new record for 
test_vehicle, I get a drop down list of id integers instead of names. 
 There was a suggestion I found somewhere on stackexchange that looks like 
the following:

db.define_table("test_model_2",
                Field("manufacturer",
                      db.test_manufacturer),
                Field("model_year"),
                Field("model"),
                format = "%(model_year)s %(manufacturer)s %(model)s")

db.define_table("test_vehicle_2",
                Field("vehicle_owner",
                      db.test_person),
                Field("model",
                      db.test_model_2),
                Field("vin",
                      label="VIN"),
                format = "%(vehicle_owner)s's %(model)s") 


That solution nearly works.  Now when I made a new test_model_2 instance, I 
can see if I'm working with a Honda or a Toyota instead of a 1 or a 2. 
 However, when I try to make a new test_vehicle_2 record, I can select from 
things like "2011 1 Accord" instead of "2011 Honda Accord".

I suppose I could deal with the admin interface being pretty much useless 
for adding new records, but I'm not sure what the most 
Pythonic/web2pythonic way of making controllers/views to enter new data 
would be.  I can also see how making my database "flatter" might help (i.e. 
don't separate manufacturer and model into different tables), but I'm sure 
I'll run into problems trying to make everything reference something only 
one level above itself.

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
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