に行われた変更後、私は私が(変更を加えビュー、そのビューには再Djangoのクエリを評価データベース
contributions = user_profile.contributions_chosen.all()\
.filter(payed=False).filter(belongs_to=concert)\
.filter(contribution_def__left__gt=0)\
.filter(contribution_def__type_of='ticket')
私は私のテンプレートで使用
context['contributions'] = contributions
以降にこの長いクエリセット声明を得ましたレコードを追加または削除する)をcontributions_chosenテーブルに追加し、私のコンテキスト[contributions]を更新したいのであれば、同じlenghtyクエリでデータベースを再クエリする必要があります。
contributions = user_profile.contributions_chosen.all()\
.filter(payed=False).filter(belongs_to=concert)\
.filter(contribution_def__left__gt=0)\
.filter(contribution_def__type_of='ticket')
そして、再び、私はそれが実際にデータベース上の実際のデータを反映したような貢献を再評価するために、私の自己の繰り返しを避けることができます任意の方法をtheresの場合
context['contributions'] = contributions
は、だから私は思っていた私のコンテキストを更新します。 理想的には、クエリーセットのコントリビューションを変更し、その値が更新されると同時に、データベースにこの変更が反映されますが、これを行う方法はわかりません。 UPDATE
: これは私が2つの コンテキストの間で何をすべきか[ '貢献'] =拠出
私はcontributions_chosen(これはM2Mの関係である)に、新たな貢献オブジェクトを追加し、あるcontribution = Contribution.objects.create(kwarg=something,kwarg2=somethingelse)
user_profile.contributions_chosen.add(contribution)
contribution.save()
user_profile.save()
場合によってはiが寄与オブジェクト 寄与= user_profile.contributions_chosen.get(ID = 1) user_profile.contributions_chosen.get(ID = request.POST [ 'CON contribution.deleteを削除()
ご覧のとおり、contributions_chosenテーブルを変更しているので、クエリを再発行してコンテキストを更新する必要があります。 何が間違っていますか?
UPDATE 評価についてのコメントを見た後、私は[「貢献」]私はコンテキスト間 LEN(寄付)を行うクエリセットをevalしません実現し、それが問題のようです。 私はデータベースの操作の後にそれを移動し、それはthats、ありがとう男です。
あなたは、クエリセット 'contributions'を評価されていないので、それはまだDBからないフェッチされたデータを持っているので、それを更新することを心配する必要はありませんようです。 'QuerySet'は遅延評価されるので、評価されるまでDB行に関係するものは何もありません。 – okm