Reputation: 235
Can anybody tell me how to handle form submit and fields using class based views. Here is my views.py
class ProfileView(FormView):
template_name='profile.html'
form_class = UnregisterMealForm
context={}
@method_decorator(login_required)
def form_valid(self, form):
return HttpResponse("You have succesfully unregistered for the meal")
def form_invalid(self, form):
return self.render_to_response(self.get_context_data(form=form))
def dispatch(self,*args, **kwargs ):
if self.request.user.is_active:
context = super(ProfileView, self).dispatch( self.request, *args, **kwargs)
return context
else:
return HttpResponseRedirect('%s?next=%s' % (settings.LOGIN_URL, self.request.path))
def get_context_data( self, **kwargs):
form=UnregisterMealForm(self.request.POST)
meals = ['breakfast','lunch','dinner']
context = {'meals' : meals , 'unregisterform': form}
if form.is_valid():
select_date = request.POST['select_date']
select_meal = request.POST['meal']
context['recent'] = "You have succesfully unregistered for "+ select_meal +" on " + select_date
return context
When I submit the form, it shows an error Attribute Error 'UnregisterMealForm' object has no attribute 'user'
Here is my UnregisterMealForm
class UnregisterMealForm(forms.Form):
MEALS = [('breakfast','breakfast'),('lunch','lunch'), ('dinner','dinner')]
select_date = forms.DateField(widget=DateInput())
meal = forms.CharField(widget=forms.Select(choices=MEALS, attrs={'class':'form-control', 'placehoder':'Choose the Meal' }))
Can anybody help me with this. If you need more information please tell me.
Thanks in advance. I m a novice in django.
Upvotes: 0
Views: 1487
Reputation: 5863
You can save object in your form_valid method:
def form_valid(self, form):
model = YourModel()
model.select_date = form.cleaned_data['select_date']
model.select_meal = form.cleaned_data['meal']
model.save()
messages.success(request, "Your message here")
Upvotes: 1