Django中的F和Q函数
内容简介: 介绍Django中的F和Q作用以及使用方法 通常情况下我们在更新数据时需要先从数据库里将原数据取出后方在内存里,然后编辑某些属性,最后提交。例如: obj = Order.objects.get(orderid=+= 1
上述方法生成的sql语句为: UPDATE `core_order` SET ...,`amount` = 22 WHERE `core_order`.`orderid` =
但是我们本意想生成的sql语句为: UPDATE `core_order` SET ...,`amount` = `amount` + 1 WHERE `core_order`.`orderid` =
此时F的使用场景就在于此: django.db.models core.models obj = Order.objects.get(orderid=<span style="color: #800000;">'<span style="color: #800000;">12<span style="color: #800000;">'<span style="color: #000000;">)
obj.amount = F(<span style="color: #800000;">'<span style="color: #800000;">amount<span style="color: #800000;">') + 1<span style="color: #000000;"> obj.save() <span style="color: #008000;">#<span style="color: #008000;">生成的sql语句为: UPDATE core_order SET ...,amount = core_order .amount + 1 WHERE core_order .orderid = <span style="color: #800000;">'<span style="color: #800000;">12<span style="color: #800000;">' <span style="color: #008000;">#<span style="color: #008000;"> 和预计的一样
当Django程序中出现F()时,Django会使用SQL语句的方式取代标准的Python操作。 上述代码中不管? 需要注意的是在使用上述方法更新过数据之后需要重新加载数据来使数据库中的值与程序中的值对应: ? order= Order.objects.get(pk=order.pk) ?或者使用更加简单的方法:
?
参考博客:
官方地址:
<table style="height: 30px; background-color: #afeeee; width: 1266px; ; width: 1266px;" border="0"> |