Ваше время очень ценится!
Я потратил весь день на это, получил большинство ошибок, кроме этой 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>