Saq*_*Ali 5 python django orm django-queryset
这是我的Django模型:
from django.db import models
class MyModel(models.Model):
    a = models.IntegerField()
    b = models.IntegerField()
    c = models.IntegerField()
我想取出这个模型中的所有实例a = 5和b + c > 10。我该怎么做?
当我尝试这个:
print MyModel.objects.filter(a=5).extra(
    select={"total_count": "b + c"},
    where=["total_count > 10"],
)
我收到此错误:
OperationalError: (1054, "Unknown column 'total_count' in 'where clause'")
可以转换b + c > 10为b > 10 - c然后使用F内置函数
MyModel.objects.filter(a=5).filter((b__gt=10-models.F('c'))
使用 Djangoextra()不太安全
每当使用 extra() 时都应该非常小心。每次使用时,都应该使用 params 对用户可以控制的任何参数进行转义,以防止 SQL 注入攻击。请阅读有关 SQL 注入防护的更多信息。
| 归档时间: | 
 | 
| 查看次数: | 4161 次 | 
| 最近记录: |