我有一个简单的电子商务网站与产品和变化。Django ManyToMany Field还是别的?
每个变化肯定会有不同的权重,每个权重将有一个数量。
由于每个变体可以有不同的权重,并且每个权重都有一个数量,我已经实现了一个带有与变体的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字段的Weight模型设置为Variation,然后数量应该为每个选定的权重下拉。这将允许存储重量和数量的值,并且每种产品在每种情况下都使用相同的值。
我现在的问题是:
1.这是正确的方法吗?
2.如果不是什么是最好的办法做到这一点?
3.如果这是正确的方法如何做到这一点?
4.如果这是正确的方法我怎么显示这个管理网站,因为每个重量也应该有一个数量(我不知道如何做到这一点)?
5.有没有更好的方法来实现这一点,如果是的话如何?
感谢您的回复。这并不能完全解决问题,因为每个重量我都必须设定数量。在上述情况下,每个变化模型实例可以有多个权重,但只能有一个数量,而我也需要基于权重选项的数量。 – Uma
您可以为重量和数量创建两种不同的关系。我已经更新了答案。 – kt14