• Members 2 сообщения
    15 июля 2021 г. 10:24

    Добрый день. Выполнял 19-ый урок по Django.
    Получил ошибку как на картинке.
    Код в model:

    class CategoryManager(models.Manager):
        """Менеджер категорий"""
        CATEGORY_NAME_COUNT_NAME = {
            'Ноутбуки': 'notebook__count',
            'Смартфоны': 'smartphone__count'
        }
    
        def get_queryset(self):
            return super().get_queryset()
    
        def get_categories_for_left_sidebar(self):
            models = get_models_for_count('notebook', 'smartphone')
            qs = list(self.get_queryset().annotate(*models))
            data = [
                dict(name=c.name, url=c.get_absolute_url(), count=getattr(c, self.CATEGORY_NAME_COUNT_NAME[c.name]))
                for c in qs
            ]
            return data
    
    
    class Category(models.Model):
    
        name = models.CharField(max_length=255, verbose_name='Имя категории')
        slug = models.SlugField(unique=True)
        objects = CategoryManager()
    
        def __str__(self):
            return self.name
    
        def get_absolute_url(self):
            return reverse('category_detail', kwargs={'slug': self.slug})
    
    Ошибка в 19-ом уроке.png

    PNG, 82,8 КБ, загружены Xolerik 15 июля 2021 г..

  • Team
    15 июля 2021 г. 10:26

    Добрый день. Нужен код из функции get_models_for_count

  • Team
    15 июля 2021 г. 10:45

    На самом деле уже не первый раз вижу эту ошибку от пользователей. Только что запустил проект из гита, заполнив категорию и товары, ошибок не возникло.

  • Members 2 сообщения
    16 июля 2021 г. 4:48

    Да, простите, действительно не досмотрел один момент, оставлю тут, если есть ещё такие же невнимательные:

    Правильный вариант:

    def get_models_for_count(*model_names):
    
        return [models.Count(model_name) for model_name in model_names]
    

    Вариант, что написал я по недосмотру:

    def get_models_for_count(*model_names):
           return [models.Count(model_names) for model_name in model_names]
    
  • Team
    16 июля 2021 г. 16:27

    Рад, что разобрались.