Django Models создают пакет продуктов

У меня есть модель продукции

class Product(models.Model):
name = models.CharField(max_length=200)
price = models.DecimalField(max_digits=8, decimal_places=2)
weight= models.PositiveIntegerField(default=454)
brand = models.ForeignKey(Brand, on_delete=models.CASCADE, related_name="product_brand", blank=True, default=1)
flavour = models.CharField(max_length=200, blank=True)
discription = models.TextField(default='')
image = models.ImageField(null=True, blank=True)

def __str__(self):
    return self.name

@property
def imageURL(self):
    try:
        url = self.image.url
    except:
        url = ''
    return url

Теперь я хочу иметь возможность создать пакет, скажем, купить 5 товаров за £ 10. В корзине покупок она будет добавлена как 5 X Multibuy. Поэтому у меня есть еще одна модель под названием Multibuy

class Multibuy(models.Model):
name = models.CharField(max_length=200, default='Multibuy')
brand = models.ForeignKey(Brand, on_delete=models.CASCADE, related_name="multibuy_brand", blank=True, default=1)
product = models.ForeignKey(Product,  on_delete=models.SET_NULL, null=True)
max_items = models.IntegerField(default=8, null=True, blank=True)
price = models.DecimalField(max_digits=8, decimal_places=2)

Мне интересно узнать, есть ли лучший способ сделать это. Например, написать декоратор в модели products, и отказаться от модели Multibuy.
С учетом того, что цена и количество комплектов для разных товаров будет разным, и админу нужно добавить это, и, возможно, он захочет изменить это позже.

Вернуться на верх