0

我想选择最好的相关对象并在一个查询中保存新的对象以避免竞争条件。可能吗?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