使用 Django Q F 对象构建复杂的查询

本文介绍了如何使用Django的Q对象和F对象构建复杂的查询,包括AND、OR、NOT操作,以及如何动态构建查询条件。Q对象允许自由组合多条件,而F对象则用于在数据库层面执行操作,减少了Python与数据库间的交互次数,提高性能。
摘要由CSDN通过智能技术生成
from django.db import models

class Question(models.Model):
    text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('published_date')

    def __unicode__(self):
        return self.text

先在 settings.py 中进行设置:

TIME_ZONE = 'Asia/Shanghai'

LANGUAGE_CODE = 'zh-CN'

然后创建一些数据:

>>> Question.objects.create(
    text='what are you doing',
    pub_date=datetime.datetime(2015, 11, 7)
)
>>> Question.objects.create(
    text='what is wrong with you',
    pub_date=datetime.datetime(2014, 11, 7)
)
>>> Question.objects.create(
    text='who are you',
    pub_date=datetime.datetime(2015, 10, 7)
)
>>> Question.objects.create(
    text='who am i',
    pub_date=datetime.datetime(2014, 10, 7)
)
>>> Question.objects.all()
[<Question: what are you doing>, <Question: what is wrong with you>, <Question: who are you>, <Question: who am i>]
AND

将多个 Q 对象作为非关键字参数或使用 & 联结即可实现 AND 查询:

>>> from django.db.models import Q

# Q(...)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值