django-Q对象的使用

Posted mengdie1978

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django-Q对象的使用相关的知识,希望对你有一定的参考价值。

django-Q对象的使用

0.数据库的数据(不使用Q,全部查询出来)

a. 路由

path(\'q_text/\', views.QText, name=\'q_text\'),

b. 表模型

class UserInfo(models.Model):
    username = models.CharField(verbose_name=\'名称\', max_length=225)
 
    def __str__(self):
        return self.username

c .测试数据

# 1.不用Q查询数据,看看数据库有什么数据
    query_dic1 = models.UserInfo.objects.all()
    print(query_dic1)
    # <QuerySet [<UserInfo: 阿大>, <UserInfo: 阿二>, <UserInfo: 阿三>, <UserInfo: 大保健>]>

一:基本使用:

a.Q的基本作用:产生一个或的条件

b.代码验证

from django.db.models import Q
from app01 import models
 
 
def QText(request):
    """Q使用测试"""
    # 2.Q的基本使用,产生一个或的条件,进行查询
    # 查询名称叫,阿大或大保健的人,如果两个都存在,一起查询出来,如果有不存在的,会把查询存在的返回
    query_dic2 = models.UserInfo.objects.filter(Q(username=\'阿大\') | Q(username=\'大保健\'))
    query_dic3 = models.UserInfo.objects.filter(Q(username=\'阿大\') | Q(username=\'zz\'))
    print(query_dic2)
    # <QuerySet [<UserInfo: 阿大>, <UserInfo: 大保健>]>
    print(query_dic3)
    # < QuerySet[ < UserInfo: 阿大 >] >
    return HttpResponse(\'ok\')

二:高级用法,案例构造模糊查询的条件

def QText(request):
    """Q使用测试"""
    # 实例化一个Q对象
    con = Q()
    # 构造或的条件,还可以构造 AND
    con.connector = \'OR\'
    # 查寻什么
    q = \'大\'
    # 1.可以有多个条件 
    con.children.append((\'%s__contains\' % \'username\', q))  # 2.类似username_contains --> username是数据库的字段
    # con.children.append((\'%s__contains\' % \'dec\', q))
    # 查询名称包含大的数据
    query_dic4 = models.UserInfo.objects.filter(con)
    print(query_dic4)
    # <QuerySet [<UserInfo: 阿大>, <UserInfo: 大保健>]>
    return HttpResponse(\'ok\')

三补充:

a . 可以进行多层嵌套,比如外面是or,里面是and

django-q如何删除定时任务

【中文标题】django-q如何删除定时任务【英文标题】:Django-q how to delete scheduled tasks 【发布时间】:2021-07-05 03:56:36 【问题描述】:

我正在使用 django-q 来安排每月发送电子邮件的活动。经过几次测试运行,我意识到每次执行时:

Schedule.objects.create(func='app.email.send_monthly_email',schedule_type=Schedule.MONTHLY,repeats=-1)

此计划事件已缓存,它将在我下次启动 qcluster 时运行。如何删除 django-q 中的所有计划任务?或者我每次运行 qcluster 时如何才能有一个干净的开始?

【问题讨论】:

【参考方案1】:

您可以使用打开数据库外壳

python manage.py dbshell

然后使用 SQL 命令:

DELETE FROM django_q_schedule

请记住,这将删除所有计划任务

【讨论】:

【参考方案2】:

打开 Django ORM 外壳

from django_q.models import Schedule

在这里,您可以查看所有已安排的作业

Schedule.objects.all()

删除,

job = Schedule.objects.get(id=<job_id>)
job.delete()

【讨论】:

以上是关于django-Q对象的使用的主要内容,如果未能解决你的问题,请参考以下文章

Django-q如何从代码中删除计划任务

django-q如何删除定时任务

为啥django-q会用箭头时间抛出异常

django-q 单个作业的多个 cron 表达式

为啥django-q定时任务会随机延迟?

在 aws linux 2 实例上使用弹性 beanstalk 运行 django-q