Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database Django-这些查询集会被缓存吗?_Database_Django_Caching_Django Models - Fatal编程技术网

Database Django-这些查询集会被缓存吗?

Database Django-这些查询集会被缓存吗?,database,django,caching,django-models,Database,Django,Caching,Django Models,results=ThreadVault.unassigned\u threads.all()会被缓存吗?我不确定\u isnull=True是否算作已计算的值(因为计算会导致缓存) 另外,如果有一个名为ThreadVault的模型,我想查找数据库中是否存在线程#777和#888,使用缓存进行查找的最佳方式是什么 class UnassignedThread(models.Manager): def get_queryset(self): return super(Unas

results=ThreadVault.unassigned\u threads.all()
会被缓存吗?我不确定
\u isnull=True
是否算作已计算的值(因为计算会导致缓存)

另外,如果有一个名为ThreadVault的模型,我想查找数据库中是否存在线程#777和#888,使用缓存进行查找的最佳方式是什么

class UnassignedThread(models.Manager):
    def get_queryset(self):
        return super(UnassignedThread,
                self).get_queryset().filter(
                        _irc_name__isnull=True)


不,查询集在切片或迭代之前是惰性的
filter
只是向查询添加条件,但不计算它

对于第二个问题,这两个问题都不是很好,尽管第一个问题比第二个问题要好得多(这涉及加载和迭代表中的每个对象)。相反,您应该将
exists()
过滤器中的
\u结合使用:

results = ThreadVault.objects.all()
for ticket in results:
    if ticket.thread_id == "777" or ticket.thread_id == "888":
        do something
这两个问题都与缓存无关。

th_id=[“777”、“888”]

ThreadVault.objects.filter(thread\u id\u in=th\u id).exists()

用于缓存视图
来自django.views.decorators.cache导入缓存页面

@cache\u页面(60*15)

def我的视图(请求):




因为我需要知道,如果每个线程id都存在以添加它,那么上面的操作将不起作用。执行列表(ThreadVault.objects.all())是否会更有效,这样_result_缓存已满,可以测试每个票证号是否存在?
results = ThreadVault.objects.all()
for ticket in results:
    if ticket.thread_id == "777" or ticket.thread_id == "888":
        do something
ThreadVault.objects.filter(thread_id__in=["777", "888"].exists()