我有一个django应用程序,它将在特定时间(例如每天11:00)开始的24小时内检索并向该应用程序的所有用户显示3条记录(问题)。最好是,我想使记录列表随机化,或者只使用自动递增的问题ID。有超过14,000条记录。
我可以从数据库中检索记录并随机显示这些记录。但是,每个http get请求(刷新浏览器窗口)都会检索不同的问题 Models.py
from django.db import models
from django.contrib.auth.models import User
from django.conf import settings
class Questions(models.Model):
question = models.CharField(max_length=254, blank=True, null=True)
answer = models.CharField(max_length=254, blank=True, null=True)
question_used = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
modified_at = models.DateTimeField(auto_now_add=True)
Views.py
from django.shortcuts import render
from django.views.generic import CreateView, View
from .models import *
from wallet.models import UserWallet
class DailyDrawView(View):
template_name = 'daily_draw/daily_draw.html'
def get(self, request, *args, **kwargs):
que_attempt = DailyDraw.objects.filter(user=request.user, is_active=True).last()
question_objs = Questions.objects.all().order_by('?')[:3]
points = WinnerPoint.objects.last().amount
return render(request, self.template_name {'question_objs':question_objs, 'que_attempt':que_attempt, 'points':points })
在每天的特定时间,检索3条记录。在24小时内向所有用户显示这些记录。更新这3行,以使这些相同的记录不再显示。冲洗并重复。
答案 0 :(得分:0)
所以我的解决方案是创建一个单独的表,用于存储问题ID和日期。然后将发出请求的时间与应该产生新问题的固定时间进行比较。如果时间已超过24小时,我会用新的问题ID和当前日期的行来更新参考表。
如果有人需要,我可以发布更全面的答案。