我的设置是在Google App Engine上运行的Django-Nonrel
我有一个LessonStep内联模型\表单的Lesson模型\表单。连接是通过LessonStep中的外键指向Lesson。
我正在使用save_related
,这样一旦保存了Lesson表单,以及所有LessonStep内联表单,我将能够对内联模型进行一些数据操作。
这是我的代码:
def save_related(self, request, form, formsets, change):
super(LessonAdmin,self).save_related(request, form, formsets, change)
logging.debug("inlines: %d" % (len(form.instance.lessonstep_set.all()),) )
问题在于:
让我们认为我的课程表单没有LessonStep实例。我通过Django管理表单添加一个新的并保存,然后调用此函数。接下来发生的是,实例确实保存在数据库中,但form.instance.lessonstep_set.all())
返回空查询集。日志记录打印为inlines: 0
显然数据存在,因为当更新的管理表单出现时,它有新的LessonStep实例。
我的问题:
即使数据刚刚通过super
保存,查询集如何返回为空?
是否有更好的方法来保存刚保存的模型的已保存内联实例?
更多信息 - 如果我在记录行上放置一个断点并评估查询,我会得到一个返回正确查询集的结果。所以我觉得这与Django缓存或查询的上下文有关。
答案 0 :(得分:1)
Django(我没有非rel的经验)缓存相关对象的查询集。您可以通过从数据库中重新获取实例来避免这种情况。
instance = Lesson.objects.get(pk=form.instance.id)
len(instance.lessonstep_set.all())