0

我的设置是在 Google App Engine 上运行的 Django-Nonrel

我有一个具有 LessonStep 内联模型\表单的课程模型\表单。连接是通过 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 管理表单添加一个新表单并保存它,然后调用此函数。接下来发生的事情是该实例确实保存在 DB中,但form.instance.lessonstep_set.all())返回一个查询集。日志打印出来为inlines: 0

显然数据就在那里,因为当更新的管理表单出现时,它有新的 LessonStep 实例。

我的问题:

即使数据刚刚通过 保存,查询集为什么返回空super?有没有更好的方法来访问刚刚保存的模型的已保存内联实例?

更多信息 - 如果我在日志行上放置一个断点并评估查询,我会得到一个返回正确查询集的结果。所以我觉得这与 Django 缓存或查询的上下文有关。

4

1 回答 1

1

Django(我没有非rel经验)缓存相关对象查询集。您可以通过从数据库中重新获取实例来避免这种情况。

instance = Lesson.objects.get(pk=form.instance.id)
len(instance.lessonstep_set.all())
于 2013-01-06T18:27:40.173 回答