Django post_保存信号似乎仅在第二次保存或之后触发
因此,在保存第一个模型时,我正在使用Django post_保存信号似乎仅在第二次保存或之后触发,django,django-signals,Django,Django Signals,因此,在保存第一个模型时,我正在使用post_save上的信号触发功能创建另一个模型的实例: 触发信号的型号: class Product(models.Model): # ... colors = models.ManyToManyField(Color) sizes = models.ManyToManyField(Size) 以及功能: def create_skus(instance, **kwargs): for color in instance.c
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\u sku
,但似乎只在第二次保存或之后才起作用,导致用户必须保存一个产品两次。这是怎么回事
EDIT:我认为这与如何添加这些M2M关系有关(即
instance.colors.add()
但我不确定,如果你知道解决方法,我会永远爱你。信号是在保存产品实例时发送的,而不是在保存颜色和大小实例时发送的。因此,在第一次尝试时,你的post_save()函数的产品实例不会(现在)具有颜色和大小实例,因为它们不是通过产品模型的save()方法保存的
查看以下两个链接:
- 您也可以使用