这是我的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
!它的价值如何变化?
编辑:用更多信息更新了问题。
答案 0 :(得分:4)
我猜self.favorites是某种迭代器,也许是django QuerySet。
第一个str()运行迭代器并将其清空
第二个str()再次运行迭代器,它是空的
答案 1 :(得分:0)
使用 这段代码,它不会发生(假设self.favorites和self.hello不是属性)。我的猜测是,其他地方的东西正在改变self.favorites或self.hello的价值。是否有另一个线程可以在某处执行此操作?或者这可能是在不同的请求中发生的?