I am working on a Django application which contains an Offer
model. An Offer
instance contains the pricing conditions and points to a product definiti
ContentTypes is the right approach. This is because the ForignKey can only point to one type of table so you need to pass through the an intermediate table and do your split depending on the different type.
So model inheritance for the class hierarchy, but ContentType for the foreign keys.
Take a look at django-polymorphic, this implements this feature, and also uses ContentTypes internally.
You can't do that in Django. Either use generic relations or a Django app that add this feature like django_polymorphic.
If you only need to point to "any product," not any model, then the solution is to have a Product model that all products inherit from (i.e. Television and Camcorder are both subclasses of Product), and give your Offer model a ForeignKey to Product.
You might want to have a look at model inheritance.