首页 > 解决方案 > Python Django Int 的无效输入语法错误,即使它不应该是整数

问题描述

我正在使用 Python、Django 2.1 和 PostgreSQL 制作电子商务应用程序。当我单击其中一个类别以显示特定于该类别的产品时,它告诉我有数据错误。显然,在 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

标签: pythondjangodjango-views

解决方案


推荐阅读