Как создать разные таблицы размеров для каждого типа одежды?

Я делаю магазин на django и не могу понять, как решить эту проблему: У меня есть класс Product (класс для одежды) и мне нужно создать еще один класс для Sizes различных категорий одежды, например: Обувь будет иметь - 9US, 10US, 11US... Рубашки будут иметь размеры - XS, S, M, L... и т. д. Как я могу создать такой класс? Мой класс продукта:

class Product(models.Model):
    class ModerationStatuses(models.TextChoices):
        DRAFT = 'DR', _('черновик')
        ON_MODERATION = 'MD', _('На модерации')
        APPROVED = 'AP', _('Одобрено')
        REJECTED = 'RJ', _('Отклонено')

    class ConditionStatuses(models.TextChoices):
        NEW = 'NEW', _('New')
        USED = 'USD', _('Used')
        VERY_WORN = 'VW', _('Very worn')
        NOT_SPECIFIED = 'NS', _('Not specified')

    title = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=6, decimal_places=2)
    quantity = models.IntegerField()
    city = ...
    style = models.ForeignKey(Style, related_name='category_products', on_delete=models.CASCADE, null=True, blank=True)
    category = models.ForeignKey(Category, related_name='style_products', on_delete=models.CASCADE, null=True, blank=True)
    address = models.CharField(max_length=250)
    description = models.TextField()
    brand = models.CharField(max_length=150)
    published = models.BooleanField(default=False, null=False)
    modification = models.OneToOneField('self', on_delete=models.CASCADE, null=True, blank=True,
                                        help_text='When editing an approved item a modification is created. This '
                                                  'modification is sent for moderation and, after approval, replaces '
                                                  'the original position.')
    is_modification = models.BooleanField(default=False)
    moderation_status = models.CharField(choices=ModerationStatuses.choices, default=ModerationStatuses.DRAFT,
                                         null=False, max_length= 2)
    condition = models.CharField(choices=ConditionStatuses.choices, default=ConditionStatuses.NEW, null=False, max_length=3)
    posted_at = models.DateTimeField(auto_now_add=True)
    def __str__(self):
        return self.title

Я буквально не могу найти никакой информации для решения моей проблемы(((

Я немного упрощаю ваш класс Product для этого :

models.py

class Product(models.Model):
    title    = models.CharField(max_length=100)
    price    = models.DecimalField(max_digits=6, decimal_places=2)
    quantity = models.IntegerField()
    
    def size(self):
       return Size.objects.filter(product=self)

class Size(models.Model):
    product    = models.ForeignKey(Product, on_delete=models.CASCADE)
    title      = models.CharField(max_length = 256)
    created_at = models.DateTimeField(auto_now_add=True)

admin.py

class SizeInline(admin.TabularInline):
    model = Size

class ProductAdmin(admin.ModelAdmin):
    list_display = ('title', 'price')
    inlines = [SizeInline]

Таким образом, вы можете добавить размер или любые другие функции, которые вы хотите.

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