У меня есть UpdateView, который я использую для обновления некоторых данных из моей модели, но я хочу дать своему пользователю только максимальное количество раз, которое он может сделать, после того как он использовал все свои «обновления», он не долженбудет возможно больше. Мой взгляд выглядит следующим образом:
class TeamUpdate(UpdateView):
model = Team
template_name = 'team/team_update_form.html'
context_object_name = 'team'
form_class = TeamUpdateForm
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({
'max_updates': 2
})
return context
def form_valid(self, form, **kwargs):
team = form.save()
// update context somehow so that it has the new value for max_updates?
messages.success(self.request, f'{team} was updated')
return redirect(team.get_absolute_url())
Моя проблема сейчас заключается в том, что я не знаю, как я могу динамически обновлять свой контекст каждый раз, когда обновляется моя форма. Как бы я это сделал? Я предполагаю, что жестко закодированный "2" должен быть удален, и я, вероятно, должен сделать что-то вроде 2 if not value_from_form else value_from_form
, но как мне получить это value_from_form
? И могу ли я использовать это значение в моей рассылке, чтобы проверить, равен ли он нулю, а затем перенаправить моего пользователя обратно с предупреждающим сообщением типа «Извините, вы израсходовали все свои обновления для этой команды!». Спасибо всем, кто ответит!