django版本2.2及更高版本是否支持模型管理器的get_by_id方法
类ProductManager(models.Manager): def get_queryset(自我): return ProductQuerySet(self.model,using=self.\u db)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
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