I realized that this wouldn't work for applications that don't link customers to users but to groups of users (like Basecamp).

Current options I'm considering:

1. Use a `GenericForeignKey` so any model can be linked to
  * To fix merchant customer ID uniqueness issues either:
      * require user to link to a single type of model (otherwise self.user.id may not be unique)
      * use a hash of the model name and ID to create the ID (ID won't be unique this way)
      * Create CustomerProfile first to get a database ID and then use `self.id` as the merchant ID instead
2. Use a setting for the model string:

        customer = models.OneToOneField(settings.AUTH_CUSTOMER_MODEL, related_name='customer_profile')

I think the second option will be better, but I haven't seen any apps that do that yet.