Я получил этот длинный оператор запроса в представлении
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
И позже в этом представлении я вношу изменения (добавляю или удаляю запись) в table posts_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
Поэтому мне было интересно, есть ли способ избежать повторения самого себя, чтобы переоценить вклад, чтобы он действительно отражал реальные данные в базе данных. В идеале я бы изменил вклад набора запросов, и его значения были бы обновлены, и в то же время база данных отражала бы эти изменения, но я не знаю, как это сделать.
ОБНОВЛЕНИЕ: Это то, что я делаю между двумя контекст['вклады'] = вклады
Я добавляю новый объект вклада в posts_chosen (это отношение m2m),
contribution = Contribution.objects.create(kwarg=something,kwarg2=somethingelse)
user_profile.contributions_chosen.add(contribution)
contribution.save()
user_profile.save()
И в некоторых случаях я удаляю объект вклада вклад = user_profile.contributions_chosen.get (id = 1) user_profile.contributions_chosen.get(id=request.POST['con вклад.delete()
Как видите, я изменяю таблицу posts_chosen, поэтому мне нужно повторно выполнить запрос и обновить контекст.Что я делаю неправильно?
ОБНОВЛЕНИЕ Увидев ваши комментарии об оценке, я понимаю, что оцениваю набор запросов, который делаю. len(contributions) между context['contribution'] и это кажется проблемой. Я просто перенесу его после операций с базой данных и все, спасибо, парень.