【问题标题】:Python, Django: Alternative to a raw-sql-queryPython、Django:原始 sql 查询的替代方案
【发布时间】:2021-03-29 12:07:51
【问题描述】:

晚上好,

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

models.py

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

views.py

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

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

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

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

【问题讨论】:

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

标签: python sql django django-queryset


【解决方案1】:

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

因此您可以使用以下方法进行过滤:

Person.objects.filter(<b>age__lt=30</b>).update(<b>value=5</b>)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 2012-03-16
    • 2015-08-23
    • 1970-01-01
    • 2013-04-17
    • 2018-05-15
    • 2014-07-12
    相关资源
    最近更新 更多