Получение количества прочитанных тем для следующей категории в блоге
У меня есть блог на Django. С моделью языка и подтемы. Каждая подтема принадлежит языку... Пользователи могут следить за языком, и им будут доступны только темы для этого языка
#следующий язык, views.py
class followLanguageView(TemplateView):
template_name = 'lessons/lessons.html'
def get(self, request, *args, **kwargs):
language_id = kwargs['pk']
language = Language.objects.filter(id=language_id).first()
skill_id = kwargs['pk']
skill = Skill.objects.filter(skill_follow__user=self.request.user).first()
if language:
if request.GET.get('unfollow'):
LanguageFollow.objects.filter(language=language, user=self.request.user).delete()
SkillFollow.objects.filter(skill=skill, user=self.request.user).delete()
elif LanguageFollow.objects.filter(language__language_follow__user=self.request.user).exists():
LanguageFollow.objects.filter(language=language, user=self.request.user).delete()
else:
LanguageFollow.objects.get_or_create(language=language, user=self.request.user)
return redirect(reverse('lessons'))
У меня есть многоточие в подтеме . Где пользователи могут отметить тему как прочитанную. Я хочу получить общее количество прочитанных тем для определенной категории, за которой следит пользователь
#read count, views.py
@login_required
def dashboard(request):
language_follow = LanguageFollow.objects.filter(user=request.user)
read = LanguageFollow.objects.filter(language__language_follow__user=request.user)
read_count = SubTopic.objects.filter(read=read).count()
total_topic = SubTopic.objects.filter(language__language_follow__user=request.user).count()
percent = topicPercent(read_count, total_topic)
return render(request, 'auth_user/userDashboard.html', {
"read_count": read_count, "total_topic": total_topic, 'language_follow': language_follow, "percent": percent,
})
#models.py
class SubTopic(models.Model):
title = models.CharField(_("title"), max_length=150)
main_title = RichTextUploadingField(max_length=50000, null=True, blank=True, default=None)
main_explanations = RichTextUploadingField(null=True, blank=True, default=None)
language = models.ForeignKey(Language, verbose_name="topic_language", on_delete=models.CASCADE, related_name='follow_language', default=None)
topic = models.ForeignKey(Topic, verbose_name=("topic"), on_delete=models.CASCADE, default=None)
published = models.DateField(auto_now_add=True, blank=True, null=True)
slug = models.SlugField(unique=True, max_length=50000, blank=True, null=True)
read = models.ManyToManyField(User, related_name='read', blank=True)
def __str__(self):
return self.title
def all_user(self):
return list(self.subtopic_follow.values_list('user', flat=True))
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.main_title)
return super(SubTopic, self).save(*args, **kwargs)
Я хочу, чтобы общее количество прочитанных тем на языке, за которым следит пользователь, передавалось в read_count
я получаю эту ошибку : Невозможно использовать QuerySet для "LanguageFollow": Используйте QuerySet для "User".
Попробуйте
SubTopic.objects.filter(language__user=request.user).count()