eCommerce enhancements

also, believe it or not, -1 is a valid `id` value for a mysql table like the ones created by django.  Not that you'd expected it to ever have that value, but since it's legal, can we just have the get default to `None` and handle the `None` case separately?