Actually, I already had the check to prevent deletion of "not sure"...
On Saturday, December 8, 2012 12:29:48 PM UTC-8, Lewis wrote: > > In my app, when users enter an item they may choose one or more categories > for the item by checking one or more checkboxes. When the form processes I > cycle through the value of the checkboxes. If none have been checked, I > want to put a default category for the item in the database named "not > sure". A hack for this, which I started with during development, was to > enter a record in the category table for "not sure", note the id, and hard > code the id. Clearly that was bad... > > So, in the db.py model I have done this instead: > > no_category = jodb.category(name = "not sure") > if no_category: > no_category_id = no_category.id # use no_category_id to force "not > sure" as category when needed > else: > no_category_id = jodb.category.insert(name = "not sure") > > This makes the variable no_category_id available in any controller. It > ensures that "not sure" is always a valid category. Assuming the database > and table persist, then the id for "not sure" will remain the same. If I > (or a helper) inadvertently deletes the "not sure" category, then the next > time through the "not sure" category id will have a different id and some > items might reference a non-existent category (which is ok with an outer > join, but will look odd). I suppose I better put in a check so that > no_category_id is never deleted. > > Does this appear to be a reasonable way to accomplish this? The cost is > doing a query every time the site is reached, but then lots more queries > are done to generate the pages users actually see. > > Thanks for any suggestions. > --

