Django:更改相关模型实例属性的值,以便稍后访问相关实例时返回更新的值

时间:2015-03-14 20:46:02

标签: python django python-2.7 django-models

我无法理解如何更改相关模型实例属性的值,以便在我读取其他地方的模型实例属性时返回更新的值。

在下面的示例中,我希望在运行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

1 个答案:

答案 0 :(得分:0)

  

是否可以在不将信息保存到数据库的情况下实现?

没有。对本地模型所做的任何更改都是临时的,直到保存为止,因为来自其他地方的访问将从数据库中检索新模型。如果您需要一个值来持续整个会话,那么您应该associate it with the session代替。