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.
>

-- 



Reply via email to