You can do something like this:
def form_valid(self, form, **kwargs):
context_data = self.get_context_data(form=form, **kwargs)
email = context_data['email'] # need use this value
return super(ProductView, self).form_valid(form)
but you can also do:
def form_valid(self, form, **kwargs):
for email in Product.objects.filter(id=self.kwargs['pk']).values_list('user__email', flat=True)[:1]:
context_data['email'] = user_obj.email
return super(ProductView, self).form_valid(form)
Also, if you use ProductModelForm, on form_valid you can use:
def form_valid(self, form, **kwargs):
if hasattr(form.instance, 'user'):
context_data['email'] = form.instance.user.email
return super(ProductView, self).form_valid(form)
django have many ways to do it :)
After comment from MagicHat
I like version with "form.instance.user.email"
but if you a really want to call get_context_data:
def form_valid(self, form, **kwargs):
self.object = form.save(commit=False)
context_data = self.get_context_data(form=form, **kwargs)
email = context_data['email'] # need use this value
return super(ProductView, self).form_valid(form)