Модели Django ежедневно получают определенные записи - PullRequest
0 голосов
/ 09 января 2019

У меня есть приложение django, которое будет извлекать и отображать 3 записи (вопросы) для всех пользователей приложения в течение 24-часового периода, начинающегося в определенное время, например, 11:00 ежедневно. Предпочтительно, я хотел бы рандомизировать список записей или просто использовать идентификатор вопроса, который автоинкрементный. Есть более 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 голосов
/ 22 марта 2019

Таким образом, мое решение состояло в том, чтобы создать отдельную таблицу, в которой сохранялись бы идентификаторы вопросов и даты. Затем сравнили время, когда был сделан запрос, с постоянным временем, когда должны создаваться новые вопросы. Если время прошло более 24 часов, я обновил справочную таблицу новой строкой идентификаторов вопросов и текущей датой.

Я могу опубликовать более полный ответ, если кому-то это понадобится.

...