为可怕的头衔道歉,我不确定如何最好地说出这一点。
我有更复杂的产品,可以在选项集中存储多个选项,例如:
Shirts:
Sizes:
Small
Medium
Large
显然,同样的衬衫可以是小号,中号或大号,但我希望我们的管理员能够在以后添加额外的尺寸(或其他选项)。
为了表达这些,我使用以下模型:
class Product(models.Model):
title = models.CharField(max_length=50)
text = RichTextField(blank=True)
product_code = models.CharField(max_length=20)
left_image = models.FileField(null=True, blank=True)
right_image = models.FileField(null=True, blank=True)
def __str__(self):
return self.title
# A container that can hold multiple ProductOptions
class ProductOptionSet(models.Model):
title = models.CharField(max_length=100)
class ProductOption(models.Model):
option_set = models.ForeignKey(ProductOptionSet, related_name="test")
option_title = models.CharField(max_length=100)
option_slug = models.CharField(max_length=100, help_text='A system friendly version of the value')
# Inherited from my CMS system.
class ShirtProduct(Product):
sizes = models.ManyToManyField(ProductOption, related_name="shirt_size")
我希望根据一些简单的信息字符串保存这些选项,例如key =" size"和size =" medium"在ShirtProduct save()方法中。
目前我有以下内容:
def save(self, *args, **kwargs):
[...]
product_options = {
'sizes': 'medium',
'colour': 'blue'
}
for key, value in product_options.items():
if key == "sizes":
option = ProductOption.objects.get(option_slug=value)
self.sizes.add(option)
super(ShirtProduct, self).save(*args, **kwargs)
然而,这似乎无能为力。我错过了什么?