1


0

これは私のDjangoアプリケーションの一部で、特別な方法でユーザーのプロフィールを保存しています。

クラス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 Answer


4


self.favoritesはある種のイテレータ、おそらくdjangoのQuerySetだと思います。

最初のstr()はイテレータを実行しそれを空にします

2番目のstr()は反復子を再度実行し、それは空です


0


このコードスニペットでは、それは起こり得ません(self.favoritesとself.helloがプロパティではないと仮定して)。 私の推測では、何か他の場所でself.favoritesまたはself.helloの値が変化しています。 どこかにこれをしている可能性がある別のスレッドはありますか? それとも、これは別の要求で起こっているのでしょうか。