Здравствуйте!
Нужно реализовать учет просмотренных постов для каждого юзера, реализую так models.py:
class CountArticle(models.Model):
user = models.OneToOneField(User)
count = models.ManyToManyField(Article)
Добавил новую таблицу с связями между каждым юзером и статьями.
Данная инициализация у меня проходит тут context_processors.py:
def total_count(request):
def init_count(request):
# add to CountArticle model Article list
count = CountArticle.objects
usr = request.user
art = Article.objects.all()
art_add = Article.objects
count.create(user=usr)
count = CountArticle.objects.get(user=usr)
for x in art:
count.count.add(art_add.get(article_title=x))
return {"total_count": len(count.count.all()), }
if request.user.is_authenticated():
try:
total = CountArticle.objects.get(user=request.user)
return {"total_count": len(total.count.all()), }
except ObjectDoesNotExist:
return init_count(request)
return {}
Суть проблемы: Я регистрирую пользователя, инициализация моих просмотренных статей происходит получается при первом запросе кол-ва, т.е. почти сразу после регистрации, и вот сейчас я добавил 20 статей и мне кажется что это всё сильно долго начинает обрабатываться, а если у меня будет 1000 статей?
Подскажите пожалуйста варианты реализации данной функции, или может подход правильный, но я делаю что-то не так?