Django 属性错误:';产品';对象没有属性';过滤器';

Django 属性错误:';产品';对象没有属性';过滤器';,django,django-models,Django,Django Models,我正在尝试访问链接“”,在该链接中我正在使用通用视图(DetailsView),并且在该视图中我希望使用自定义模型管理器。但我得到的错误是AttributeError:“Product”对象没有属性“filter” 我使用的是python版本3.8和django版本2.2.6 # ModelManager #----------------------------------------------- class ProductManager(models.Manager): def g

我正在尝试访问链接“”,在该链接中我正在使用通用视图(DetailsView),并且在该视图中我希望使用自定义模型管理器。但我得到的错误是AttributeError:“Product”对象没有属性“filter”

我使用的是python版本3.8和django版本2.2.6

# ModelManager
#-----------------------------------------------
class ProductManager(models.Manager):
    def get_by_id(self,id):
        qs = self.get_queryset().filter(id=id)
        if qs.count() == 1:
            return qs.first()
        return None



# View
#-----------------------------------------------
class ProductDetailView(DetailView):
    # queryset = Product.objects.all( )
    def get_queryset(self, *args, **kwargs):
        request = self.request
        pk = self.kwargs.get("pk")
        instance = Product.objects.get_by_id(pk)
        if instance is None:
            raise Http404("Product Couldn't be found")
        return instance
#错误 所需的是查询集,而不是实例。您应该替代:

因为这里我们只对数据库进行一次查询,而不是多次查询。

需要一个查询集,而不是一个实例。您应该替代:


因为这里我们只对数据库进行一次查询,而不是多次查询。

get\u queryset
需要一个
queryset
,而不是一个实例。您应该重写
get\u object
get\u queryset
需要的是
queryset
,而不是实例。您应该覆盖
get\u对象
Internal Server Error: /products/2
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/views/generic/base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/views/generic/base.py", line 97, in dispatch
    return handler(request, *args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/views/generic/detail.py", line 106, in get
    self.object = self.get_object()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/django/views/generic/detail.py", line 36, in get_object
    queryset = queryset.filter(pk=pk)
AttributeError: 'Product' object has no attribute 'filter'
[22/Oct/2019 18:51:56] "GET /products/2 HTTP/1.1" 500 75133
class ProductDetailView(DetailView):

    def get_object(self, *args, **kwargs):
        request = self.request
        pk = self.kwargs.get('pk')
        instance = Product.objects.get_by_id(pk)
        if instance is None:
            raise Http404('Product Couldn't be found')
        return instance
class ProductManager(models.Manager):
    def get_by_id(self,id):
        try:
            return self.get_queryset().get(id=id)
        except (self.model.DoesNotExist, self.model.MultipleObjectsReturned):
            return None