Неверный синтаксический ввод Python Django для Int, даже если он не должен быть целым числом - PullRequest
0 голосов
/ 01 апреля 2019

Я создаю приложение для электронной коммерции, используя Python, Django 2.1 и PostgreSQL. Когда я нажимаю на одну из категорий, чтобы показать продукты, относящиеся к этой категории, это говорит мне об ошибке в данных. Видимо, в URL есть строка, когда предполагается, что это целое число. Я не понимаю этого. Пожалуйста, помогите

Я пробовал много разных вещей, но ни одна из них не работает.

Мои шаблоны URL:

    path('products/phones/', product_views.CategoryDetailView.as_view(template_name='products/category_details/phones.html'), name='phones'),
    path('products/laptops/', product_views.CategoryDetailView.as_view(template_name='products/category_details/laptops.html'), name='laptops'),
    path('products/desktops/', product_views.CategoryDetailView.as_view(template_name='products/category_details/desktops.html'), name='desktops'),
    path('products/keyboards/', product_views.CategoryDetailView.as_view(template_name='products/category_details/keyboards.html'), name='keyboards'),
    path('products/mice-and-mouse-pads/', product_views.CategoryDetailView.as_view(template_name='products/category_details/mice.html'), name='mice'),
    path('products/headsets/', product_views.CategoryDetailView.as_view(template_name='products/category_details/headsets.html'), name='headsets'),
    path('products/printers-scanners-and-fax/', product_views.CategoryDetailView.as_view(template_name='products/category_details/printers.html'), name='printers'),
    path('products/consoles/', product_views.CategoryDetailView.as_view(template_name='products/category_details/consoles.html'), name='consoles'),
    path('products/misc/', product_views.CategoryDetailView.as_view(template_name='products/category_details/misc.html'), name='misc'),

Получена ошибка:

django.db.utils.DataError: invalid input syntax for integer: "Phones"
LINE 1: ...s_product" WHERE "products_product"."category_id" = 'Phones'

Мои просмотры

    model = Category
    queryset = Category.objects.all()
    template_name = 'products/category_detail.html'
    context_object_name = 'categories'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)

        # Query Sets
        context['phones'] = Product.objects.filter(category='Phones')

        context['laptops'] = Product.objects.filter(category='Laptops')
        context['total_laptops'] = len(Product.objects.filter(category='Laptops'))

        context['desktops'] = Product.objects.filter(category='Desktops')
        context['total_desktops'] = len(Product.objects.filter(category='Desktops'))

        context['keyboards'] = Product.objects.filter(category='Keyboards')
        context['total_keyboards'] = len(Product.objects.filter(category='Keyboards'))

        context['mice'] = Product.objects.filter(category='Mice and Mouse Pads')
        context['total_mice'] = len(Product.objects.filter(category='Mice and Mouse Pads'))

        context['printers'] = Product.objects.filter(category='Printers, Scanners, and Fax Machines')
        context['total_printers'] = len(Product.objects.filter(category='Printers, Scanners, and Fax Machines'))

        context['consoles'] = Product.objects.filter(category='Consoles')
        context['total_consoles'] = len(Product.objects.filter(category='Consoles'))

        context['miscellaneous'] = Product.objects.filter(category='Miscellaneous')
        context['total_miscellaneous'] = len(Product.objects.filter(category='Miscelaneous'))

        return context
...