curr = curr = get_object_or_None('Page', menu__slug=slug1, menu__parent__slug=slug2).prefetch_related('menu')
需要使用prefetch_related
从ForeignKey
获取与对象相同的信息,如果不在表格中,则获取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()
答案 0 :(得分:0)
get_object_or_None()
是指定try除块之外的快捷方式,并且它不会返回QuerySet,即prefetch_related()
所在的类。
此外,如果您尝试仅获取模型的一个实例,则无法通过预取获得任何性能增强,实际上您将在数据库中使查询更重。