0

競合状態を回避するために、最適な関連オブジェクトを選択し、新しいオブジェクトを 1 つのクエリで保存したいと考えています。出来ますか?select_for_update はこの問題を解決しますか?

class Order(models.Model):
    price = models.DecimalField(max_digits=10, decimal_places=2, default=0)
    maker_order = models.OneToOneField('self', on_delete=models.CASCADE, blank=True, null=True,
                                       related_name='taker_order')

    def save(self, *args, **kwargs):
        self.maker_order = Order.objects.filter(maker_order__isnull=True, taker_order__isnull=True,
                                                price__lte=self.price
                                                ).order_by('price').first()
        super().save(*args, **kwargs)
4

0 に答える 0