Get_object_or_None和prefetch_related

时间:2014-07-28 15:09:15

标签: django django-orm

curr = curr = get_object_or_None('Page', menu__slug=slug1, menu__parent__slug=slug2).prefetch_related('menu')

需要使用prefetch_relatedForeignKey获取与对象相同的信息,如果不在表格中,则获取None。谁知道,我可以使用get_object_or_None来实现吗?它似乎工作,但读,它不会。为什么这样?

class Menu(models.Model):
   name = models.CharField()
   parent = models.ForeignKey('self', related_name='children')
   slug = models.SlugField()
   region = models.ForeignKey()
   pos = models.IntegerField()
   on_top = models.BooleanField()
   nofollow = models.BooleanField()

class Page(models.Model):
   title = models.CharField()
   name = models.CharField()
   menu = models.ForeignKey('Menu')
   meta_key = models.TextField()
   meta_desc = models.TextField()
   body = models.TextField()
   has_certificate = models.BooleanField()

1 个答案:

答案 0 :(得分:0)

get_object_or_None()是指定try除块之外的快捷方式,并且它不会返回QuerySet,即prefetch_related()所在的类。

此外,如果您尝试仅获取模型的一个实例,则无法通过预取获得任何性能增强,实际上您将在数据库中使查询更重。