Django - 在另一个表上更新数据库中的值

问题描述

我有两张桌子

class Payment(models.Model):
    payment_id = models.CharField(max_length=100)
    status = models.CharField(max_length=100)

class Order(models.Model):
    payment = models.ForeignKey(Payment,on_delete=models.SET_NULL,blank=True,null=True)
    is_ordered = models.BooleanField(default=False)

传入值(数据)来自包含 payment_id 的网络钩子 payment_confirmation(event.data.object.id)。我希望此值与 Payment.payment_id(付款表)匹配,然后更新 Order.is_ordered=True(订单表)。

我该怎么做?我尝试了以下但没有成功:

Order.objects.filter(payment__payment_id=data).update(is_ordered=True)

另一方面,我可以通过运行来成功更新 Payment.status:

Payment.objects.filter(payment_id=data).update(status='COMPLETED')

谢谢

解决方法

你可以做到这一点

Order.objects.filter(payment_id=data).update(is_ordered=True)

您不需要“payment__payment_id=data”。 Dajngo 将轻松获取 payment_id。