Таким образом, я использую триггерную функцию сигнала на post_save
для создания экземпляров другой модели при сохранении первой:
Модель, запускающая сигнал:
class Product(models.Model):
# ...
colors = models.ManyToManyField(Color)
sizes = models.ManyToManyField(Size)
И функция:
def create_skus(instance, **kwargs):
for color in instance.colors.select_related():
for size in instance.colors.select_related():
SKU.objects.get_or_create(product=instance, color=color, size=size)
Моя проблема в том, что create_skus
должен вызываться на post_save каждый раз, но кажется, что он работает только во 2-м сохранении или после, в результате чего пользователям приходится сохранять продукт дважды,Каково происхождение этого?
РЕДАКТИРОВАТЬ : Я думаю, что это как-то связано с тем, как складываются эти отношения M2M (т.е. instance.colors.add(<Color object>)
, но я не уверен, и если вызнаю обходной путь, я буду любить тебя вечно.