Мой проект зависит от предоставления пользователям баллов за то, что они делают (публиковать, комментировать, например, избранные, ....)
Я создал процессор контекста, чтобы использовать некоторые вычисления в нескольких шаблонах.
Моя проблема в том, что я не могу вызвать эти контекстные процессоры в шаблоне без для l oop
Models.py
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='posts')
favourite = models.ManyToManyField(User, related_name='favourite', blank=True)
class Comment(models.Model):
user = models.ForeignKey(
User, on_delete=models.CASCADE, related_name='commenter')
post = models.ForeignKey(
Post, on_delete=models.CASCADE, related_name='comments')
class Profile(models.Model):
image = models.ImageField(default='default.jpg', upload_to='profile_pics')
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='profile')
views.py
class UserDetailView(DetailView):
template_name = 'user/user-details.html'
queryset = User.objects.all()
def get_object(self):
return get_object_or_404(
User, username__iexact=self.kwargs.get("username")
)
settings.py
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'common.context_processors.user_counters',
],
шаблонов. html
<ul class="dynamic-tabs-list">
<li data-content=".content-points">Points
<span class="badge badge-light">{{ user.total_score }}</span></li>
</ul>
context_processors.py
def user_counters(request):
user_qs = User.objects\
.annotate(
user_posts_count=Count('posts', distinct=True),
user_posts_score=F('user_posts_count') * 10,)\
.annotate(
user_comments_count=Count('commenter', distinct=True),
user_comments_score=F('user_comments_count') * 10,)\
.annotate(
user_favourites_count=Count('favourite', distinct=True),
user_favourite_score=F('user_favourites_count') * 10,) \
.annotate(
user_likes_count=Count('likes', distinct=True),
user_likes_score=F('user_likes_count') * 10, ) \
.annotate(
total_score=F('user_posts_score')+F('user_comments_score')+F('user_favourite_score')+F('user_likes_score')
)
context = {
'user_qs': user_qs,
}
return context
urls.py
path('profile/<username>/', UserDetailView.as_view(), name='user-detail'),
Любая помощь, пожалуйста?
Заранее спасибо