我正在 django 上开店,但不知道如何解决问题: 我得到了产品类(衣服类),我需要为不同类别衣服的尺寸创建另一个类,例如: 鞋子将获得 - 9US、10US、11US... 衬衫有 - XS、S、M、L... ETC。 我怎样才能创建这种类型的课程? 我的产品类别:
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
我真的找不到任何信息来解决我的问题(((
我让你的产品类变得更简单一点:
模型.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)
管理员.py
class SizeInline(admin.TabularInline):
model = Size
class ProductAdmin(admin.ModelAdmin):
list_display = ('title', 'price')
inlines = [SizeInline]
通过这种方式,您可以添加尺寸或任何其他您想要的功能。