Довольно плохо знаком с Django (1.2), но просто тестирую материал.
Моя головная боль - найти способ создания серии объектов SKU при создании объекта Product.
class Product(models.Model):
name = models.CharField(max_length=255, unique=True)
style = models.CharField(max_length=50)
colors = models.ManyToManyField(Color)
sizes = models.ManyToManyField(Size)
class SKU(models.Model):
id = models.CharField(max_length=15, unique=True, primary_key=True)
style = models.ForeignKey(Product)
color = models.ForeignKey(Color)
size = models.ForeignKey(Size)
quantity = models.IntegerField(default=0)
Первоначально я пытался справиться с этим в Product.save, но, увы, без игры в кости.Затем я попробовал эту настройку сигналов:
# models.py
def create_skus(sender, instance, *args, **kwargs):
if 'created' in kwargs:
if kwargs['created']:
for x in instance.colors.select_related():
for y in instance.sizes.select_related():
sku = instance.style
sku += instance.x.shortcode
sku += instance.y.name
s = SKU(id=sku, style=instance, color=x, size=y)
s.save()
... # after the Product class
post_save.connect(create_skus, sender=Product)
Некоторые примеры, которые я видел, призывают метод сохранения класса отправителя иметь что-то вроде этого:
def save(self):
post_save.send(create_skus, self)
... и вот гдеЯ в.Эта настройка не выдает никаких ошибок, но она также не создает упомянутые SKU.
Если я не буду использовать какой-либо из этих сигналов, любые указатели будут оценены.Или, если есть другой способ совершить подобный подвиг, это было бы также замечательно.
Приветствия!