разработка схемы для продукта электронной коммерции - PullRequest
2 голосов
/ 29 сентября 2019

Я изучаю модели в 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?

Вот ссылка

https://i.imgur.com/qGDBz29.png

1 Ответ

0 голосов
/ 29 сентября 2019

Я думаю, вы просто хотите понять термины и как они связаны друг с другом, правильно?И как только вы поймете, вы можете решить, как настроить схему и модели.

ProductVariant : «версия» Продукта.С точки зрения электронной коммерции это может означать что-то, что не вписывается в модели Attribute или AttributeValue .Например, товар может иметь вариант:

  • размер
  • страна происхождения
  • язык
  • только для мужчин, только для женщин, унисекс
  • разные ценовые категории (high-end и low-end, public против private)

Я думаю, что вы можете обойтись без ProductVariant модели и простозаставить вещи работать, используя атрибуты.Возможно, имеет смысл использовать ProductVariant в качестве ссылки на ранее существовавший Product (ограничение внешнего ключа для Product.id).См. здесь и здесь .

ProductVariantImage : версия ProductImage .

ProductOptions : параметры для продукта.Вместо этого вы можете использовать Атрибуты .Эта таблица / модель, похоже, ничем не отличается от того, что уже есть у Атрибутов & AttributeValues ​​.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...