title: Django get value from foreign key when the object was instantiated
body: <p>I am writing a simple online ordering app. I am encountering an issue when the item price gets updated. The orders that were completed also changes price. I would like to have the orders with the products have the price when the order was completed, and not get it from Product model with the latest price.</p>
  
  <p>In other words, when you make a purchase for an item on Amazon, your order will have the price when you purchased the item, so it the price changes, it will still remain as the old price in your order (meaning that quantity * price will add up correctly).</p>
  
  <pre><code>class ProductQuantity(models.Model):
      product = models.ForeignKey('Product')
      order = models.ForeignKey('Order')
      quantity = models.PositiveIntegerField(default=1)
      ready = models.BooleanField(default=False)
  
      def __unicode__(self):
          return '[' + str(self.order.pk) + '] ' + \
             self.product.name + ' (' + self.product.unit + '): ' + str(self.quantity)  
  
      class Meta:
          verbose_name_plural = "Product quantities"
  
  class Order(models.Model):
       customer = models.CharField(max_length=100, default="")
       phone = models.CharField(max_length=20, default="")
       email = models.CharField(max_length=50, default="")
  
       collection = models.ManyToManyField(Product, through=ProductQuantity)
  
       def __unicode__(self):
           return str(self.pk)
  </code></pre>