@Tinord

Как реализовать модели цены, типов и продуктов?

Здравствуйте.

Такой вопрос: есть модель продуктов, типов, атрибутов типов.
Нужно реализовать модель цены так, чтобы типы были общие для всех продуктов, а цена должна относиться как к продукту, так и к каждому атрибуту типа.

Приведу пример: продукт - мороженое, тип - рожок, атрибуты - маленький, средний, большой. Цена соответственно варьируется от атрибута и продукта.

Смотрю в сторону contenttype

class ProductAttribute(models.Model):
    name = models.CharField(max_length=128, verbose_name="Название атрибута")

    class Meta:
        verbose_name = 'Атрибут'
        verbose_name_plural = 'Атрибуты'


class ProductType(models.Model):
    name_type = models.CharField(max_length=128, verbose_name="Название типа продукта")
    product_attribute = models.ManyToManyField(ProductAttribute)

    class Meta:
        verbose_name = 'Тип'
        verbose_name_plural = 'Типы'

    def __str__(self):
        return self.name_type

class Product(models.Model):
    category = models.ForeignKey(Category, on_delete=models.PROTECT, verbose_name="Категория")
    type = models.ForeignKey(ProductType, on_delete=models.PROTECT, verbose_name="Тип")
    tags = models.ManyToManyField(Tags, )
    name = models.CharField(max_length=200, db_index=True, verbose_name="Название")
    slug = models.SlugField(max_length=200, db_index=True)
    image = models.ImageField(upload_to='products/%Y/%m/%d/', blank=True, verbose_name="Изображение товара")
    description = models.TextField(blank=True, verbose_name="Описание")
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    class Meta:
        ordering = ['name']
        verbose_name = 'Продукт'
        verbose_name_plural = 'Продукты'
        index_together = [
            ['id', 'slug']
        ]

    def __str__(self):
        return self.name
  • Вопрос задан
  • 302 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы