Using the dog-owner model from the examples, you might have a model like 
this:

db.define_table('dog', Field('dog_name'))
db.define_table('owner', Field('owner_name'))
db.define_table('dog_owner',
  Field('dog_id', db.dog),
  Field('owner_id', db.owner),
  Field('owner_plays_fetch_with_dog', 'boolean)
)

I like to use tabs to edit a relationship like this on one web page.

I would use an SQLFORM or a crud form on the first tab to present the owner 
data for editing.  This data gets processed in the normal way.

I would put the dog data on a second tab, but use jquery ajax to handle 
changes.  Maybe the dog's name changes, or the owner decides to start 
playing fetch-the-stick with the dog.

The problem with this approach is that you can lose changes made on the 
owner page.  If you, for example, need to edit both the owner's name and 
the dog's name, you might type the owner's new name on tab 1, move to tab 2 
and edit the dog's name, then close the page without going back to tab 1 
and clicking Submit.

There are several possible solutions.

- Put the owner and dog information on separate forms with submit buttons. 
 They may or may not be on different tabs.  The drawback is it takes a 
round trip to the server every time a user switches between dog information 
and owner information.

- Use jquery/ajax on the owner page to record changes as they are made.  If 
the user is making a lot of changes on a form, I'm not sure there is a good 
way to give feedback.

- Use some kind of form-dirty javascript to remind the user to submit the 
form on the first tab if he tries to close the page while it still has 
unsaved changes.  

Which approach would you use, or would you handle this in a different way?

Thank you.

Reply via email to