Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 电子商务产品的模式设计_Python_Django_Django Models_Database Design - Fatal编程技术网

Python 电子商务产品的模式设计

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

我正在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_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:产品的“版本”。从电子商务的角度来看,这可能意味着不适合属性属性值模型。例如,产品可以有一个变体:

  • 大小
  • 原籍国
  • 语言
  • 仅限男性,仅限女性,不限性别
  • 不同的价位(高端与低端、公共与私人)
我认为您可以不使用ProductVariant模型,只需使用属性就可以正常工作。使用ProductVariant作为对预先存在的产品的引用(Product.id上的外键约束)可能很有意义。见和

ProductVariatimage:产品图像的一个版本


产品选项:产品的选项。您只需使用属性即可。此表/模型似乎与属性&属性值已有的没有任何不同。

您能分享您所说的链接吗?我分享了图像链接@CalebGoodman。该图像来自何方?我以为你在谈论一篇解释电子商务数据库设计的文章。你是说一个产品可以有不同的尺寸。大小因子不是进入属性吗?对不起,如果我误解了。你能举一个服装产品的例子吗?当然。将大小存储为属性是正确的。这可能就是我第一次设计模型的方式。但是,它也可以定义为产品变体。产品变体只是指向客户展示产品的另一种方式。尺码是一种典型的产品变体,因为同一产品可以销售多种不同的尺码。请参见他们在中提供的示例。