首页 > 解决方案 > Python、Django:原始 sql 查询的替代方案

问题描述

晚上好,

我想问一下,原始sql查询是否有不同的方法来按我的views.py中的某个条件更新项目?例如,我知道我可以执行这样的插入查询:

模型.py

class Person(models.Model):
    name = models.CharField()
    age = models.IntegerField()
    value = models.IntegerField()

视图.py

def something(request):
    ...
    qs = Person(name="John Doe", age=34, value=10)
    qs.save()
    ...

如果符合特定条件,是否有类似的方法可以更新所有“人员”?

...
qs = Person("UPDATE Person SET value=5 WHERE age < 30") # or something like this
qs.save()
...

感谢您的所有帮助和建议,祝大家周末愉快!

标签: pythonsqldjangodjango-queryset

解决方案


您可以使用.update(…)[Django-doc]更新对应表的记录,并使用.filter(…)[Django-doc]指定更新的项目。

因此,您可以过滤:

Person.objects.filter(age__lt=30).update(value=5)

这里我们使用__lt查找 [Django-doc]来指定年龄应该小于30。


推荐阅读