title: django - Use foreign key for multi-table inheritance
body: <p>I am stuck in an odd position in my database design, and I would appreciate some comments. We are using django-shop for an e-commerce platform. There is a base class defined for products:</p>
  
  <pre><code>from polymorphic.polymorphic_model import PolymorphicModel
  
  class BaseProduct(PolymorphicModel):
      ...
      class Meta:
          abstract = True
  </code></pre>
  
  <p>We extended this base class for our own <code>Product</code> object:</p>
  
  <pre><code>class Product(BaseProduct):
      # custom fields
  </code></pre>
  
  <p>We now want to create another object, representing an offer to this <code>Product</code> object, something like:</p>
  
  <pre><code>class Offer(models.Model):
      product = models.ForeignKey(Product)
      # more
  </code></pre>
  
  <p>We want this  <code>Offer</code> object to be added to the cart, and used in orders, just like the regular <code>Product</code> class. Yet, <code>Cart</code> and <code>Order</code> classes expects objects of type <code>Product</code></p>
  
  <pre><code>class Order(models.Model):
      product = models.ForeignKey(Product)
  </code></pre>
  
  <p>So as it is, we can't add <code>Offer</code> objects to the cart, or save them in orders.</p>
  
  <p>I was thinking of making <code>Offer</code> a subclass of <code>Product</code> as well, but instead of having a OneToOne relationship used in typical multi-table inheritance, somehow change it to a regular ForeignKey. I'm not even sure if this makes sense, let alone be possible.</p>
  
  <p>Our database is already deployed in production with many <code>Product</code> objects, and this offer class is something we want to add on top, without modifying the rest.</p>
  
  <p>Any thoughts on how to approach this?</p>