Python Django - Количество объектов на основе владельца, который является пользователем - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть пользователи, которые перечислили их учебник. Мне нужно подсчитать объекты в модели учебника и отобразить общее количество в боковом меню.

Вот моя модель

from django.db import models
from django.http import HttpResponse
from django.urls import reverse
from django.contrib.auth.models import User
from django.utils.functional import cached_property


class Textbooks(models.Model):
    owner = models.ForeignKey(User, on_delete=models.PROTECT, null=True, blank=True)
    title = models.CharField(max_length=1000)
    isbn = models.CharField(max_length=20)
    author = models.CharField(max_length=250)
    edition = models.CharField(max_length=50)
    rrp = models.CharField(max_length=30)
    about = models.TextField(max_length=1000, null=True)
    textbook_image = models.FileField(null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def get_absolute_url(self):
        return reverse('textbooks:detail', kwargs={'pk': self.pk})

    def __str__(self):
        return self.title

Я использовал пользовательский тег шаблона

class CustomTag(template.Node):
    def render(self, context):
        context['my_custom_tag_context'] = Textbooks.objects.filter(owner=self.user.request).count()

        return ''

@register.tag(name='get_custom_tag')
def get_custom_tag(parser, token):
    return CustomTag()

введите описание изображения здесь

AttributeError at / 'CustomTag' объект не имеет атрибута 'user'. Кажется, я не могу использовать фильтр в теге шаблона. Есть ли другой способ, которым я могу отфильтровать их и показать счет по владельцу, который вошел в систему?

Вот что я намерен иметь.

введите описание изображения здесь

1 Ответ

2 голосов
/ 27 февраля 2020

Вы должны изменить нижнюю строку в ...

user = context['request'].user
context['my_custom_tag_context'] = Textbooks.objects.filter(owner=user).count()

вместо

context['my_custom_tag_context'] = Textbooks.objects.filter(owner=self.user.request).count()

Вы можете получить user из request.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...