Django模型每天检索特定记录

时间:2019-01-08 23:41:41

标签: javascript python django django-models

我有一个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行,以使这些相同的记录不再显示。冲洗并重复。

1 个答案:

答案 0 :(得分:0)

所以我的解决方案是创建一个单独的表,用于存储问题ID和日期。然后将发出请求的时间与应该产生新问题的固定时间进行比较。如果时间已超过24小时,我会用新的问题ID和当前日期的行来更新参考表。

如果有人需要,我可以发布更全面的答案。