from django.db import models class Product(models.Model): STOCK_STATUS_CHOICES = [ ('instock', 'В наявності'), ('outofstock', 'Немає в наявності'), ] wp_id = models.CharField(max_length=50, unique=True, verbose_name="ID WordPress") image = models.URLField(max_length=500, blank=True, null=True, verbose_name="Фото") name = models.CharField(max_length=255, verbose_name="Назва товару") sku = models.CharField(max_length=100, blank=True, null=True, verbose_name="Артикул (SKU)") price = models.DecimalField(max_digits=12, decimal_places=2, verbose_name="Ціна (грн)") stock_status = models.CharField(max_length=20, choices=STOCK_STATUS_CHOICES, verbose_name="Статус") total_sales = models.IntegerField(default=0, verbose_name="Продано") created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) def __str__(self): return self.name class Meta: verbose_name = "Товар" verbose_name_plural = "Товари" ordering = ['-total_sales'] class Variation(models.Model): product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='variations', verbose_name="Основний товар") size = models.CharField(max_length=50, verbose_name="Розмір") price = models.DecimalField(max_digits=12, decimal_places=2, verbose_name="Ціна варіації") stock_quantity = models.IntegerField(default=0, verbose_name="Залишок на складі") def __str__(self): return f"{self.product.name} - {self.size}" class Meta: verbose_name = "Варіація" verbose_name_plural = "Варіації"