django版本2.2及更高版本是否支持模型管理器的get_by_id方法

django版本2.2及更高版本是否支持模型管理器的get_by_id方法,django,django-models,Django,Django Models,类ProductManager(models.Manager): def get_queryset(自我): return ProductQuerySet(self.model,using=self.\u db) Teget\u by\u id方法是在您的ProductManager中定义的,因此Django版本并不重要。此外,该函数的逻辑是有效的,但不是非常有效,因为它进行了两次查询 您可以通过以下方式更有效地实现这一点: from django.core.exceptions ObjectD

类ProductManager(models.Manager): def get_queryset(自我): return ProductQuerySet(self.model,using=self.\u db)


Te
get\u by\u id
方法是在您的
ProductManager
中定义的,因此Django版本并不重要。此外,该函数的逻辑是有效的,但不是非常有效,因为它进行了两次查询

您可以通过以下方式更有效地实现这一点:

from django.core.exceptions ObjectDoesNotExist, MultipleObjectsReturned

class ProductManager(models.Manager):
    def get_queryset(self):
        return ProductQuerySet(self.model, using=self._db)
    
    def get_by_id(self):
        try:
            return self.get_queryset().get(id=id)
        except (ObjectDoesNotExist, MultipleObjectsReturned):
            return None
从django.core.exceptions ObjectDoesNotExist,返回多个对象
类ProductManager(models.Manager):
def get_queryset(自我):
return ProductQuerySet(self.model,using=self.\u db)
def按id获取(自身):
尝试:
返回self.get\u queryset().get(id=id)
除了(ObjectDoesNotExist,multipleobjectsreern):

return None
否,django 1.7及以下版本将支持此方法按id获取


1.7之后的版本将无法执行此操作。

我的错误是:AttributeError:'str'对象没有属性'get\u queryset'。请帮助我为什么要获取this@user13336549:您如何在
产品
模型中使用manager?请编辑您的问题并:a)使用代码块功能(开始和结束时使用三个````)包含您的代码。示例:```(新行)代码(新行)``b)添加此代码块的一些说明。
from django.core.exceptions ObjectDoesNotExist, MultipleObjectsReturned

class ProductManager(models.Manager):
    def get_queryset(self):
        return ProductQuerySet(self.model, using=self._db)
    
    def get_by_id(self):
        try:
            return self.get_queryset().get(id=id)
        except (ObjectDoesNotExist, MultipleObjectsReturned):
            return None