I am getting an error when using list:reference and the checkbox widget: db.define_table('person', Field('name', requires=IS_NOT_EMPTY()), Field('dogs', 'list:reference dog')) db.define_table('dog', Field('name', requires=IS_NOT_EMPTY()))
db.person.dogs.widget = SQLFORM.widgets.checkboxes.widget I have also tried to place the widget in the Field: Field('dogs', 'list:reference dog', widget=SQLFORM.widgets.checkboxes.widget) But I get the same error: <type 'exceptions.SyntaxError'> widget cannot determine options of person.dogs I am using (2012-10-21) stable version of web2py, if it helps. On Wednesday, February 6, 2013 4:26:26 PM UTC-5, Derek wrote: > > It's a list:reference field then, look at the reference in chapter 6: the > database abstraction layer > > On Wednesday, February 6, 2013 2:09:50 PM UTC-7, brac...@gmail.com wrote: >> >> Hello, I was reading about the "Links to referencing >> records<http://web2py.com/books/default/chapter/29/07>" >> part in the online guide, but was confused how I would deal with custom >> logic of inserting it to the database. The guide seems to already have the >> values in the database to pull from. >> >> If we take the person and dog database in the example, a person can own >> many dogs, but a dog can only have one owner. >> >> If we take the example one step further and say we're running an animal >> shelter, we would have a list of people and a list of dogs, but we don't >> have the connection between the two. If a person wants to adopt a dog, >> they'll use a form which will have the following elements: >> >> Textfield for the person's name. >> A list of checkboxes with the dog's name. >> >> Then upon successful form submission, the selected dogs are linked to a >> person. >> >> I don't quite understand how the form is built using "form = >> SQLFORM(db.person)" in this scenario. >> >> Since SQLFORM builds its own html, how would web2py handle the dog >> object? By default, it will probably use a textfield because the dog has a >> String name, but what about the owner reference? Furthermore, the dog has >> to be treated as a boolean since we are simply asking if this dog should >> belong to the human listed on the form or not. I can't quite picture how >> "SQLFORM.widgets.boolean.widget" >> since a dog isn't a boolean value tied to a person. It's its own entity >> with a name and an owner. >> >> The only way I can think of to solve this is to NOT use SQLFORM, but >> rather SQLFORM.factory(). Then I would use "{{=form.custom.begin/end}}" to >> manually format the form, create the Textfield for the person name, and >> generate the checkboxes in a for loop given the list of dog names. When the >> form passes basic validation with form.accepted, I would grab the person's >> id and update the entry for all dogs that are returned checked. >> >> Do I have the right idea or am I misunderstanding web2py design? Is there >> an easier way to handle one-to-many relationships through a form? >> >> -- --- 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.