Django之Q和F算子
Django提供了Q和F算子来方便查询。
Q算子
在对queryset进行filter时,filter语句的关系是AND关系,要实现OR关系,则需要使用Q算子。
例如
1 | Q(question__startswith='Who') | Q(question__startswith='What') |
相当于
1 | WHERE question LIKE 'Who%' OR question LIKE 'What%' |
F算子
在实际开发中,常常需要对数据库中的某一个字段进行加减操作,如评论数,访问量等等。一种做法是把这个字段读出来,然后进行操作,之后再保存到数据库中,而F算子提供了简便的方法,它使这些操作直接在数据库中执行。
例如,在下面的例子中需要对stories_filed字段进行加1操作。
1 | # Tintin filed a news story! |
而使用F算子,则是
1 | from django.db.models import F |
F算子的优势在于不需要使用Python, 而只是使用数据库来完成操作。
而F算子的另外一个好处是减少多线程下的变量问题。