Есть несколько способов сделать это.Как например:
Способ 1. Отправьте его в URL Querystring
из предыдущего просмотра сведений, отправьте электронное письмо в строке запроса url.Например:
def DetailForm(request, *args, **kwargs):
...
if form.is_valid():
# do some things
user_email = form.cleaned_data.get('user_email') # assuming its the form field you are using for catching user email
redirect_url = "{}?user_email={}".format(self.get_success_url(), user_email)
return HttpResponseRedirect(redirect_url)
И перехватить его в следующем представлении формы:
def Contact(request):
form_class = ContactForm(initial={'contact_email': request.GET.get('user_email')})
...
Метод 2: Сохранить в сеансе.
Это почти аналогично последнему подходу, ноон сохраняет данные в сеанс .
def DetailForm(request, *args, **kwargs):
...
if form.is_valid():
# do some things
request.session['user_email'] = form.cleaned_data.get('user_email') # Storing data in session
# every other code
и получает их в следующем виде формы:
def Contact(request):
form_class = ContactForm(initial={'contact_email': request.session.get('user_email')})
...
Обновление
Если вы приходитена странице сведений означает, что у вас есть доступ к объекту.Поэтому на странице сведений обновите кнопку contact
следующим образом:
<a href="{% url 'portal:contact_form' object.email %}">contact</a> // or user.email if you are passing user object as user in context
в представлении контактов:
def Contact(request, email):
if request.method == "GET":
form = ContactForm(initial={'contact_email': email)})