标题和代码。我正在一个电子商务网站上,每个项目(颜色/大小)将有多个选项。在代码中,您可以看到价格(price(1-3)),其想法是为管理员创建一个按钮或选项,以添加其他尺寸,因此价格无需硬编码sizename(1-4),colorName( 1-4)。我希望您能理解我要做什么,我昨天才开始学习python以及所有这些bootstrap和django的东西。顺便说一句,如果您知道处理所有这些问题的简便方法,请告诉我,我对如何制作购物车一无所知。
我刚刚开始
class Product(models.Model):
name = models.CharField(max_length=255)
price = models.DecimalField(decimal_places=2, max_digits=20)
stock = models.IntegerField()
image_url = models.CharField(max_length=2083)
category = models.CharField(choices=MY_CHOICES, max_length=25, default='Default')
multSizes = models.BooleanField(default=False)
numberSizes = models.IntegerField(default=1)
price1 = models.DecimalField(decimal_places=2, max_digits=20, default=0)
price2 = models.DecimalField(decimal_places=2, max_digits=20, default=0)
price3 = models.DecimalField(decimal_places=2, max_digits=20, default=0)
sizename1 = models.CharField(max_length=255, default='N/A')
sizename2 = models.CharField(max_length=255, default='N/A')
sizename3 = models.CharField(max_length=255, default='N/A')
sizename4 = models.CharField(max_length=255, default='N/A')
numberColors = models.IntegerField(default=1)
colorName = models.CharField(max_length=255, default='N/A')
colorName1 = models.CharField(max_length=255, default='N/A')
colorName2 = models.CharField(max_length=255, default='N/A')
colorName3 = models.CharField(max_length=255, default='N/A')
colorName4 = models.CharField(max_length=255, default='N/A')
我希望能够通过django管理面板更改不同尺寸/价格和颜色的数量。我不想像现在那样对字段进行硬编码。
答案 0 :(得分:0)
如果Product
模型仅具有一个“颜色”和“大小”字段,则可以创建具有不同属性的模型多个实例。
class Product(models.Model):
name = models.CharField(max_length=255)
price = models.DecimalField(decimal_places=2, max_digits=20)
stock = models.IntegerField()
image_url = models.CharField(max_length=2083)
category = models.CharField(choices=MY_CHOICES, max_length=25, default='Default')
sizename = models.CharField(max_length=255, default='N/A')
colorName = models.CharField(max_length=255, default='N/A')
>>> p1 = Product(name="shirt", price=10, sizename="M", colorname="red")
>>> p2 = Product(name="pants", price=20, sizename="M", colorname="yellow")
但是,我认为您遇到的问题是对于具有一组某些属性的产品-name
,price
,stock
,{{1} }和image_url
-有多种尺寸和颜色。正确吗?
如果是这样,您仍然可以创建共享这些属性的多个实例:
category
但是,在数据库设计中,这不被视为“常规形式”。 See: Second Normal Form (Wikipedia).
更好的设计可能是将这些属性拉到一个单独的表中,即第二个Django模型,该表使用外键引用第一个模型。像这样:
>>> p1 = Product(name="shirt", price=10, sizename="M", colorname="red")
>>> p2 = Product(name="shirt", price=10, sizename="L", colorname="yellow")
有关更多信息,请参见many-to-one relationships上的Django文档。