首页 > 解决方案 > 除非重新启动服务器,否则 Django 查询集不会在实时服务器上更新,而是在本地更新

问题描述

我正在使用 Django 3.2 版

此查询集在本地和实时更新:

variable1 = serialize('json', Calls.objects.order_by('-time_pulled','-time')[:15].using('myDatabase'))

这两个查询集仅在服务器重新启动后实时更新,然后从不刷新:

variable2 = Calls.objects.filter(local_date = current_local_date).using('myDatabase').count()
variable3 = serialize('json', Calls.objects.all().filter(local_date=current_local_date).using('myDatabase'))

我确实在 Django 文档中读到 .count() 不返回新的查询集,但 .filter() 应该返回。我试着用

Calls.refresh_from_db

但这也不会刷新查询集。我也试过打电话

Calls.objects.all()[:15].using('myDatabase') 

在视图函数的开头查看它是否会获取新的查询集,但在后面的调用中看不到结果。任何帮助,将不胜感激。先感谢您。

##########EDIT - 添加了上下文############# 在views.py的顶部,我定义了这些变量:

utc_now = pytz.utc.localize(datetime.utcnow())
cst_now = utc_now.astimezone(pytz.timezone("America/Chicago"))

current_local_date = cst_now.strftime('%Y-%m-%d')

然后我定义了第一个视图:

def myFirstView(request):
    variable2 = Calls.objects.filter(local_date = current_local_date).using('myDatabase').count()
    variable3 = serialize('json', Calls.objects.all().filter(local_date=current_local_date).using('myDatabase'))
    context = {'variable2':variable2, 'variable3':variable3}
    return render(request, 'myReport.html', context)

除非重新启动服务器,否则这两个不会刷新。然后我定义了这个视图:

def view2(request):
   variable1 = Calls.objects.all().order_by('-time_pulled', 'time')[:15].using('myDatabase')
   context = {'variable1':variable1}
   return render(request, 'myOtherReport.html', context)

这会刷新而无需重新启动服务器。

标签: pythondjangodjango-models

解决方案


推荐阅读