Здравствуйте.
Такой вопрос: есть модель продуктов, типов, атрибутов типов.
Нужно реализовать модель цены так, чтобы типы были общие для всех продуктов, а цена должна относиться как к продукту, так и к каждому атрибуту типа.
Приведу пример: продукт - мороженое, тип - рожок, атрибуты - маленький, средний, большой. Цена соответственно варьируется от атрибута и продукта.
Смотрю в сторону 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