概念:
飲み物は成分でできています。例えばウォッカ10ml。一部の領収書では、成分が非常に特殊なもの (Finlandia Vodka 10ml) もあれば、そうでないもの (ANY Vodka 10ml) もあります。
この問題を解決するためにコンポーネントをモデル化する方法を考えています。より多くの要件を満たすことができる特定の製品を在庫に持っています。
現在のモデルは次のとおりです。
class Receipt(models.Model):
name = models.CharField(max_length=128)
(...)
components = models.ManyToManyField(Product, through='ReceiptComponent')
def __unicode__(self):
return self.name
class ReceiptComponent(models.Model):
product = models.ForeignKey(Product)
receipt = models.ForeignKey(Receipt)
quantity = models.FloatField(max_length=9)
unit = models.ForeignKey(Unit)
class Admin:
pass
def __unicode__(self):
return unicode(self.quantity!=0 and self.quantity or '') + ' ' + unicode(self.unit) + ' ' + self.product.genitive
class Product(models.Model):
name = models.CharField(max_length = 128)
(...)
class Admin:
pass
def __unicode__(self):
return self.name
class Stock(Store):
products = models.ManyToManyField(Product)
class Admin:
pass
def __unicode__(self):
return self.name
実際の製品 (在庫) と抽象的な製品 (レシート コンポーネント) を結合するテーブルを作成することを考えています。しかし、おそらく簡単な解決策がありますか?