使用来自过滤查询集中的 self 对象属性更新特定的 ORM 对象

时间:2021-02-09 10:31:41

标签: python django django-orm

我想知道是否有任何选项可以使用来自当前对象的新值更新过滤查询集中的当前 ORM 对象?看起来有点复杂,所以也许我会向您展示一个示例:

模型看起来像:

class Car(models.Model):
    car_id = models.CharField(max_length=100)
    initial_value = models.IntegerField(null=True)
    end_value = models.IntegerField(null=True)

我的数据库中的某些汽车具有initial_value但没有最终值,我想将initial_value从特定对象复制/更新到end_value,其中end_value为None:

而且我知道存在一个 ORM 公式,它使用查询集中的给定值更新我的对象:

Car.objects.filter(end_value__isnull=True).update(end_value=100000)

但我无法在 update 方法中将对象 initial_value 传递给 end_value

Car.objects.filter(end_value__isnull=True).update(end_value=initial_value) <-- Error

请帮忙,如何将对象属性传递给更新属性?也许有不同的方法?

1 个答案:

答案 0 :(得分:1)

您可以使用F-expression

from django.db.models import F
Car.objects.filter(end_value__isnull=True).update(end_value=F('initial_value'))
相关问题