Django:添加属于集合的相关对象

时间:2017-07-20 10:38:10

标签: django django-models foreign-keys many-to-many

为可怕的头衔道歉,我不确定如何最好地说出这一点。

我有更复杂的产品,可以在选项集中存储多个选项,例如:

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)

然而,这似乎无能为力。我错过了什么?

0 个答案:

没有答案