Python:这应该是不可能的,不应该吗?

时间:2009-09-26 16:10:07

标签: python django

这是我的Django应用程序的一部分,它以特殊方式保存用户的个人资料。

class SomeUser:

    def __init__(self, request):
        self.logged_in = True
        self.profile = request.user.get_profile()
        self.favorites = self.profile.favorites.all().values_list('pk', flat=True)

    def save(self, resp):
        print "1: " + str(self.favorites)
        self.profile.favorites = self.favorites
        print "2: " + str(self.favorites)
        self.profile.save()
        return resp

输出:

1: [68, 56]
2: []

这怎么可能?我根本不是在摆弄self.favorites!它的价值如何变化?

编辑:用更多信息更新了问题。

2 个答案:

答案 0 :(得分:4)

我猜self.favorites是某种迭代器,也许是django QuerySet。

第一个str()运行迭代器并将其清空

第二个str()再次运行迭代器,它是空的

答案 1 :(得分:0)

使用 这段代码,它不会发生(假设self.favorites和self.hello不是属性)。我的猜测是,其他地方的东西正在改变self.favorites或self.hello的价值。是否有另一个线程可以在某处执行此操作?或者这可能是在不同的请求中发生的?