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对象的使用的主要内容,如果未能解决你的问题,请参考以下文章