【问题标题】:Django models retrieve specific records dailyDjango 模型每天检索特定记录
【发布时间】:2019-06-03 16:58:29
【问题描述】:

我有一个 django 应用程序,它将在特定时间开始的 24 小时窗口内检索并显示 3 条记录(问题)给应用程序的所有用户,例如每天 11:00。最好,我想随机化记录列表或只使用自动递增的问题 id。有超过 14,000 条记录。

我可以从数据库中检索记录并随机显示这些记录。但是,每个 http get 请求(刷新浏览器窗口)都会检索不同的问题 模型.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 行,以便不再显示相同的记录。冲洗并重复。

【问题讨论】:

  • 使用 Django 视图,您将有一组新的随机问题供请求。如果你想解决这个问题,你需要在某个时候缓存 3 个随机问题。这可能是某种文件或数据库记录。
  • 您可以将asked_at 字段添加到您的Question 模型并检查它是否已过期。
  • @EmettSpeer,缓存听起来是目前最好的选择。是否可以在超时值到期时填充缓存而不是等待客户端请求?

标签: javascript python django django-models


【解决方案1】:

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

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

【讨论】:

  • 请务必详细说明:) 这将是一个很好的答案,需要更多细节/代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-17
  • 2013-05-26
  • 2018-11-15
  • 2017-12-23
  • 2021-11-29
相关资源
最近更新 更多