Python 在Django中使用refresh_from_db的正确方法是什么?

Python 在Django中使用refresh_from_db的正确方法是什么?,python,django,cartridge,Python,Django,Cartridge,我使用Django 1.8、夹层、盒式磁带,并使用Postgresql作为数据库 我已经直接从数据库中更新了库存中的数量。数据库中的数量都是正确的,但我的网站上没有。我知道解决办法是,但我不知道该怎么办。我真的需要把它给我说清楚 您将如何准确地使用此盒式磁带来刷新库存中的数量?这应该是更新一个对象所需的全部操作。用对象替换对象名称 object_name.refresh_from_db() 这就是更新一个对象所需的全部操作。用对象替换对象名称 object_name.refresh_from_

我使用Django 1.8、夹层、盒式磁带,并使用Postgresql作为数据库

我已经直接从数据库中更新了库存中的数量。数据库中的数量都是正确的,但我的网站上没有。我知道解决办法是,但我不知道该怎么办。我真的需要把它给我说清楚


您将如何准确地使用此盒式磁带来刷新库存中的数量?

这应该是更新一个对象所需的全部操作。用对象替换对象名称

object_name.refresh_from_db()

这就是更新一个对象所需的全部操作。用对象替换对象名称

object_name.refresh_from_db()

我假设num_in_stock是模型类的一个属性。如果为true,则应获取该类的实例(即object_name),然后
object\u name.从\u db()刷新\u


之后,您可以像
object\u name.num\u in\u stock

一样访问它,我假设num\u in\u stock是模型类的一个属性。如果为true,则应获取该类的实例(即object_name),然后
object\u name.从\u db()刷新\u


之后,您可以像股票中的
object\u name.num\u那样访问它

我假设您使用的是
F表达式

根据an
F表达式

…可以参考模型字段值并执行 使用它们的数据库操作,而不必实际提取它们 从数据库中取出,放入Python内存

您直接在数据库中工作。Python对模型字段的值一无所知。内存中没有任何内容,数据库中的一切都在发生

文档示例:

from django.db.models import F

reporter = Reporters.objects.get(name='Tintin')
reporter.stories_filed = F('stories_filed') + 1
reporter.save()
虽然
reporter.stories\u field=F('stories\u field')+1
看起来像一个 实际上,Python通常将值赋值给实例属性 它是一个描述数据库操作的SQL构造


因此,为了让Python知道这个值,您需要重新加载对象。

要访问以这种方式保存的新值,对象必须是:

在您的示例中:

object_name.refresh_from_db()

还有一件事…

F()赋值在Model.save()之后持续

F()指定给的对象 模型字段在保存模型实例后保持不变,并将被删除 应用于每个save()

在这种情况下,
已归档的故事将更新两次。如果一开始
1,最终值为3这种持久性可以通过以下方法避免:
保存后重新加载模型对象,例如使用
从\u db()刷新\u


我假设您使用的是
F表达式

根据an
F表达式

…可以参考模型字段值并执行 使用它们的数据库操作,而不必实际提取它们 从数据库中取出,放入Python内存

您直接在数据库中工作。Python对模型字段的值一无所知。内存中没有任何内容,数据库中的一切都在发生

文档示例:

from django.db.models import F

reporter = Reporters.objects.get(name='Tintin')
reporter.stories_filed = F('stories_filed') + 1
reporter.save()
虽然
reporter.stories\u field=F('stories\u field')+1
看起来像一个 实际上,Python通常将值赋值给实例属性 它是一个描述数据库操作的SQL构造


因此,为了让Python知道这个值,您需要重新加载对象。

要访问以这种方式保存的新值,对象必须是:

在您的示例中:

object_name.refresh_from_db()

还有一件事…

F()赋值在Model.save()之后持续

F()指定给的对象 模型字段在保存模型实例后保持不变,并将被删除 应用于每个save()

在这种情况下,
已归档的故事将更新两次。如果一开始
1,最终值为3这种持久性可以通过以下方法避免:
保存后重新加载模型对象,例如使用
从\u db()刷新\u