ビューでこの長いクエリセットステートメントを取得しました
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'] を更新したい場合は、同じ長さのクエリでデータベースを再クエリする必要があります。
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
したがって、データベース上の実際のデータを実際に反映するように、貢献を再評価するために、自分自身を繰り返さないようにする方法があるかどうか疑問に思っていました。理想的には、クエリセットのコントリビューションを変更し、その値を更新し、同時にデータベースにこの変更を反映させますが、これを行う方法がわかりません。
更新:これは、2つのコンテキスト['貢献'] =貢献の間で私が行うことです
私は、contributions_chosen に新しい貢献オブジェクトを追加します (これは m2m リレーションです)。
contribution = Contribution.objects.create(kwarg=something,kwarg2=somethingelse)
user_profile.contributions_chosen.add(contribution)
contribution.save()
user_profile.save()
そして、場合によっては、投稿オブジェクトを削除します。
ご覧のとおり、contributions_chosen テーブルを変更しているため、クエリを再発行してコンテキストを更新する必要があります。私は何を間違っていますか?
UPDATE評価についてのあなたのコメントを見た後、私はクエリセットをevalすることに気づきました。データベース操作の後に移動するだけです。ありがとうございます。