Reputation: 152
I built a FormView with two fields in it. I want to use the form to pass queries to a view.
class SectorForm(forms.Form):
date = forms.DateField()
days = forms.IntegerField(max_value=365, min_value=1)
Is there a way I can take my FormView and build the success_url from the valid form fields?
So overriding the get_success_url.
def get_success_url(self):
return reverse_lazy('queryable-view' date days)
I thought I could pull it out from form_valid but never had success.
Upvotes: 1
Views: 6358
Reputation: 2322
I had similar problem once. When you work with forms, you may not use kwargs and get_success_url doesn't have access to the Form (as told before) I have get around as:
class YourView(CreateView):
appointment_id =0
def form_valid(self,form):
appointment = form.save()
self.appointment_id = appointment.pk
print self.appointment_id
return super(AppointmentCreate,self).form_valid(form)
def get_success_url(self, **kwargs):
if kwargs != None:
return reverse_lazy('payment', kwargs = {'appid': self.appointment_id})
Upvotes: 1
Reputation: 6725
get_success_url
doesn't have access to the Form
instance, but form_valid
does. Try something like this:
from django.shortcuts import redirect
class YourFormView(FormView):
# ...
def form_valid(self, form):
date, days = form.cleaned_data['date'], form.cleaned_data['days']
return redirect('queryable-view', date, days)
Upvotes: 2