Python 电子商务产品的模式设计
我正在django探索模型,我试图为电子商务产品创建一个模型。我设计的模式现在是遵循的Python 电子商务产品的模式设计,python,django,django-models,database-design,Python,Django,Django Models,Database Design,我正在django探索模型,我试图为电子商务产品创建一个模型。我设计的模式现在是遵循的 from django.db import models class Category(models.Model): name = models.CharField(max_length=80) def __str__(self): return self.name class Product(models.Model): name = models.CharField(max_le
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=80)
def __str__(self):
return self.name
class Product(models.Model):
name = models.CharField(max_length=100)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
total_stock = models.PositiveIntegerField(default=0)
def __str__(self):
return self.name
class Attribute(models.Model):
'''
attribute can be like color, material, size and many more
'''
name = models.CharField(max_length=80)
def __str__(self):
return self.name
class AttributeValue(models.Model):
'''
Values for the selected attribute like for size attr
the values can be Large, Medium, Small and etc
'''
name = models.CharField(max_length=100)
attribute = models.ForeignKey(Attribute, on_delete=models.CASCADE)
price = models.DecimalField(decimal_places=2, max_digits=10)
discount = models.DecimalField(decimal_places=2, max_digits=10)
stock = models.PositiveIntegerField(default=0)
def __str__(self):
return self.name
class ProductAttribute(models.Model):
'''
Associate Particular attribute to Particular product
'''
product = models.ForeignKey(Product, on_delete=models.CASCADE)
attribute = models.ForeignKey(Attribute, on_delete=models.CASCADE)
def __str__(self):
return self.product.name
class ProductImage(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
image = models.ImageField(upload_to = 'pic_folder/')
def __str__(self):
return self.product.name
我的问题是,当我研究可伸缩的电子商务产品设计(根据更好的表关系可伸缩并涵盖电子商务中的大部分因素)时,我看到了如下各种表
ProductVariant
,ProductVariantImage
,ProductOptions
等等。所以我对这些术语感到困惑。有谁能帮助我通过示例让我了解这一点,以及如何在我的models.py
中调整这些表
这里是链接
我想你只是想了解这些术语以及它们之间的关系,对吗?一旦理解了,就可以决定如何调整模式和模型 ProductVariant:产品的“版本”。从电子商务的角度来看,这可能意味着不适合属性或属性值模型。例如,产品可以有一个变体:
- 大小
- 原籍国
- 语言
- 仅限男性,仅限女性,不限性别
- 不同的价位(高端与低端、公共与私人)
产品选项:产品的选项。您只需使用属性即可。此表/模型似乎与属性&属性值已有的没有任何不同。您能分享您所说的链接吗?我分享了图像链接@CalebGoodman。该图像来自何方?我以为你在谈论一篇解释电子商务数据库设计的文章。你是说一个产品可以有不同的尺寸。大小因子不是进入属性吗?对不起,如果我误解了。你能举一个服装产品的例子吗?当然。将大小存储为属性是正确的。这可能就是我第一次设计模型的方式。但是,它也可以定义为产品变体。产品变体只是指向客户展示产品的另一种方式。尺码是一种典型的产品变体,因为同一产品可以销售多种不同的尺码。请参见他们在中提供的示例。