Я получил это длинное заявление QuerySet на представленииRe оценить Джанго запрос после изменений, сделанных в базе данных
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
А потом на этой точке зрения я внести изменения (добавьте или удалите запись) в таблицу contrib_chosen, и если я хочу обновить свой контекст [«взносов»], мне нужно запросить базу данных с тем же самым запросом длины.
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
Так что мне было интересно, если Theres каким-либо образом я могу избежать повторения мой сам, переоценивать вклад, так что на самом деле отражает реальные данные по базе данных. В идеале я бы изменил вкладки запроса, и его значения будут обновлены, и в то же время база данных будет отражать эти изменения, но я не знаю, как это сделать.
UPDATE: Это то, что я делать между двумя контексте [ «вклад»] = взносы
добавить новый объект вклад в contributions_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 [ 'мошенника contribution.delete()
Как вы можете видеть, я изменяю таблицу contrib_chosen, поэтому мне нужно переиздать запрос и обновить контекст. Что я делаю неправильно?
UPDATE После просмотра ваших комментариев об оценке, я понимаю, что я делаю eval запрос, я делаю len (вклад) между контекстом ['contrib'] и это кажется проблемой. Я просто перевешу его после операций с базой данных, и это так, спасибо парню.
Кажется, вы не оценили QuerySet 'contributions', таким образом, нет необходимости беспокоиться об обновлении, потому что она до сих пор не неправдоподобные данные из БД. 'QuerySet' является ленивым, поэтому он не имеет ничего общего с строками DB, пока не будет оценен. – okm