Работа с другим кодером над проектом.Его изменение остановило UpdateView
в некоторых формах от сохранения изменений.Я понял, почему .... он определил
def post
, который работает для случая, над которым он работал, но нуждается в другом действии, которое просто выполняет обновление по умолчанию.Я не уверен, как это сделать, когда он UpdateView
не делает все это автоматически.
Код UpdateView
:
class ProviderUpdateView(UpdateView):
model = Provider
form_class = ProviderForm
provider_form_class = ProviderForm
provider_term_form_class = ProviderTermForm
template_name = 'ipaswdb/provider/provider_form.html'
success_url = '/ipaswdb/provider/'
def get_context_data(self, **kwargs):
context = super(ProviderUpdateView, self).get_context_data(**kwargs)
provider = context['object']
context['provider_id'] = provider.id
prov = Provider.objects.get(pk=provider.id)
#print "provider: ",
#print prov
#print "provider terminated: ",
#print prov.is_terminated
if prov.is_terminated:
provider_form = ProviderFormView(instance=prov)
context['readonly'] = True
else:
print("NOT TERMINATED SO LETS DO THIS")
provider_form = ProviderForm(instance=prov)
context['readonly'] = False
context['provider_form'] = provider_form
provider_term_form = ProviderTermForm()
context['provider_term_form'] = provider_term_form
### Get the list of GroupLocations, but remove the current one this provider is associated with
### I just need the grouplocation id and the name
#grplocs = GroupLocationProvider.objects.filter(
return context
def post(self, request, *args, **kwargs):
#print self.request.POST.keys()
#print self.request.POST.values()
print("Posting...")
if self.request.POST.has_key('terminate'):
provider = Provider.objects.get(pk=kwargs['pk'])
form = ProviderTermForm(request.POST)
if form.is_valid():
print "Terminating Provider: ",
print provider
provider_term = ProviderTerm()
provider.is_terminated = True
provider.save()
### Update the term fields
provider_term.provider = provider
provider_term.old_id = provider.id
provider_term.term_date = form.cleaned_data['term_date']
provider_term.term_comment = form.cleaned_data['term_comment']
provider_term.save()
return HttpResponseRedirect(self.success_url)
Я знаю, что мне нужен ещена это утверждение в посте:
if self.request.POST.has_key('terminate'):
Я просто не уверен, что просто делать обычное дело 'в UpdateView
.Я проверил свою гипотезу о том, что его код лишил возможности редактировать и сохранять провайдера, потому что я полностью удалил сообщение def, и все работало хорошо с автоматикой UpdateView
.Так как мы переопределяем?* def post
мне кажется, что мы должны сами справиться с регулярным обновлением, просто не знаю, как это выглядит.