Есть ли способ перетасовать набор запросов, чтобы он отображал разные значения каждый день? - PullRequest
0 голосов
/ 30 января 2019

Я создаю веб-приложение Django 2.5, которое каждый день показывает разные цитаты из исторических личностей.Проблема в том, что эта цитата должна быть разной для каждого пользователя и должна меняться каждый день, не повторяя одну и ту же цитату.

Я уже провел некоторые исследования, и единственное, что подходит ближе - это использовать смещение при запросе набора запросов, но это не решает случайную кавычку для каждой пользовательской проблемы.

quotes/views.py
import datetime

...

now = datetime.datetime.now()
today_tt = now.timetuple()
julian_day = today_tt.tm_yday
#asuming there are 365 quotes on the database
quotes.objects.all()[jualian_day]

Что я могу сделать, чтобы реализовать это?

1 Ответ

0 голосов
/ 30 января 2019
import random

# TODO Retrieve into pks_used the previously saved primary keys 
# of the quotes already displayed to the current user
pks_used = set()

# Get the primary keys of all quotes
all_pks = set(quotes.objects.values_list('pk', flat=True))

# Exclude the quotes that have been shown already
eligible_pks = all_pks - pks_used

# Get a random quote from the list of unused quotes
# random.sample returns a list 
# (with just one element in our case)
rnd_pk = random.sample(eligible_pks, 1)[0]
todays_quote = quotes.objects.get(pk=rnd_pk)

# TODO display the quote and store its private key in the list of 
# already displayed quotes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...