我有一个简单的电子商务网站,其中包含产品和变体。
每个变体肯定会有不同的权重,每个权重都会有一个数量。
我已经实现了一个权重模型,它与变体的 ForeignKey 关系,因为每个变体可以有不同的权重,每个权重都有一个数量。
class Weight(models.Model):
variation = models.ForeignKey(Variation)
size = models.DecimalField(decimal_places=3, max_digits=8,
validators=[MinValueValidator(Decimal('0.10'))])
quantity = models.PositiveIntegerField(null=True, blank=True, help_text="Select Quantity for this size")
我将权重添加为内联,并且可以在变体中添加多个权重值和数量。请看这个http://imgur.com/XLM6sQJ
有人可能认为这可以通过为每个重量创建变化来实现,但由于每个产品肯定会有不同的重量,因此无需为每个重量创建变化。
现在我面临的问题是每个变体都有不同的重量,例如,一个变体的重量可能是 1 磅、2 磅、3 磅。这些中的每一个都将为每个变化创建新的权重对象。这意味着如果另一个变体的重量也为 1 磅、2 磅、3 磅,则会创建新对象,而不是重用现有对象。这将导致一个巨大的数据库表,其中包含许多重复的权重值。这是一个问题,因为任何产品所需的重量和数量值都是有限的(重量 = 1 磅到 100 磅,数量 = 1 到 100),因此理想情况下应该重复使用这些值。
为避免这种情况,我正在考虑将带有 ManyToMany 字段的权重模型设置为 Variation,然后数量应该是每个选定权重的下拉列表。这将允许存储重量和数量的值,并让每个产品在每个实例中使用相同的值。
我遇到的问题是:
1.这是正确的方法吗?
2.如果不是,最好的方法是什么?
3.如果这是正确的做法怎么办?
4. 如果这是正确的方法,我如何在管理站点中显示它,因为每个重量也应该有一个数量(我不知道如何做到这一点)?
5. 有没有更好的方法来实现这一点,如果有,怎么做?