Как создать разные таблицы размеров для каждого типа одежды?
Я делаю магазин на 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]
Таким образом, вы можете добавить размер или любые другие функции, которые вы хотите.