概念:
饮料是由成分制成的。例如 10 毫升伏特加。在某些收据中,成分非常特别(10 毫升芬兰伏特加),有些则不是(10 毫升任何伏特加)。
我想知道如何建模一个组件来解决这个问题——我有特定的产品,可以满足更多的要求。
现在的模型是:
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
我考虑制作一些表格,将真实产品(库存)与抽象产品(收据组件)连接起来。但也许有简单的解决方案?