我无法理解如何更改相关模型实例属性的值,以便在我读取其他地方的模型实例属性时返回更新的值。
在下面的示例中,我希望在运行index()时输出1。但是,尽管在init()中增加了temp_attribute,但打印值始终为0(初始值),而不是1(更新值)。是否可以在不将信息保存到数据库的情况下实现?我想避免这种情况,因为我不需要将这些值从一个会话持续到另一个会话。
models.py
from django.db import models
class BlogPost(models.Model):
def init(self):
for comment_instance in self.comment_set.all():
comment_instance.init()
class Comment(models.Model):
blogpost = models.ForeignKey(BlogPost)
temp_attribute = 0
def init(self):
self.temp_attribute += 1
views.py
from models import BlogPost, Comment
def index(request):
blogpost = BlogPost.objects.create()
comment = Comment.objects.create(blogpost=blogpost)
blogpost.init()
for comment_instance in blogpost.comment_set.all():
print comment_instance.temp_attribute
答案 0 :(得分:0)
是否可以在不将信息保存到数据库的情况下实现?
没有。对本地模型所做的任何更改都是临时的,直到保存为止,因为来自其他地方的访问将从数据库中检索新模型。如果您需要一个值来持续整个会话,那么您应该associate it with the session代替。