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回目以降の保存でしか機能しないようで、ユーザーは製品を2回保存する必要があります。これの起源は何ですか?
編集:これは、これらのM2M関係が追加される方法と関係があると思います(つまりinstance.colors.add(<Color object>)
、わかりません。回避策を知っている場合は、永遠にあなたを愛しています。