Попытка передать параметр URL в CBV для фильтрации и возврата набора запросов - PullRequest
0 голосов
/ 10 января 2020

Ваше время очень ценится!

Я потратил весь день на это, получил большинство ошибок, кроме этой ValueError:

ValueError в / products / invalid literal для int () с основанием 10: «Белок»

Так что где-то вдоль линии он пытается преобразовать «Белок» в целое число и, очевидно, это не круто. Пожалуйста, просветите меня! Я просто хочу отсортировать товары по полю категории для отображения в виде списка.

db traceback ...

def get_prep_value(self, value):
        from django.db.models.expressions import OuterRef
        value = super().get_prep_value(value)
        if value is None or isinstance(value, OuterRef):
            return value
        return int(value) …
    def contribute_to_class(self, cls, name, **kwargs):
        assert not cls._meta.auto_field, "Model %s can't have more than one AutoField." % cls._meta.label
        super().contribute_to_class(cls, name, **kwargs)
        cls._meta.auto_field = self

views.py (категория - это отношение ManytoMany с моделью элемента)

class BrowseProductsView(ListView):
    model = Item
    template_name = 'products.html'

    def get_queryset(self, **kwargs):
        queryset = Item.objects.filter(category__exact='Protein')
        return queryset

urls.py ...

path('products/<str:category>/', BrowseProductsView.as_view(), name='browse-products')

шаблон ...

<a class="dropdown-item" href="{% url 'store:products' category='Protein' %}">Protein</a>

1 Ответ

0 голосов
/ 10 января 2020
queryset=Item.objects.filter(category__name__exact=
'Protein'

Допустим, у вас есть поле 'name' для 'Protein' в таблице категорий.

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