Alternative to initial for forms?

I have some data that has been sent as a post request that I want to use to populate some fields of a different form. I’m currently using:
form = ContactForm(initial=request.POST)
but when I submit the contact form, this data is not included in that post request. Is there a way that I can get this data included?

I think we need to see both forms involved, as well as the view that receives the first form and renders the second form.
We also may need to see the template being used for the first form, and possibly the template for the second (but I kinda doubt that).

When you post code here, please post it between lines consisting of three backtick - ` characters. That means you’ll have a line of ```, then your code, then another line of ```. This will ensure that the forum software keeps your code formatted correctly.

The first form (does not have a template):

    <form action="/add_contact/", method="post">
    {% csrf_token %}
    <input type="hidden" name="case_id" value= {{ id }}>
    <input type="hidden" name="case_name" value = {{ name }}>
    <input type="submit" value="Add Contact">
    </form>

The view:

def add_contact(request):
    if request.method == 'POST':
        form = ContactForm(initial=request.POST)
        if form.is_valid():
            form.add_contact()
            return HttpResponseRedirect('/poscase/')
        else:
            return render(request, 'contactForm.html', context= {'form' : form})
    else:
        return HttpResponseRedirect('/poscase/')

The template for the second form:

class ContactForm(forms.Form):
    case_id = forms.IntegerField(label='Case ID', disabled=True)
    case_name = forms.CharField(label='Case Name', disabled=True)
    contact_name = forms.CharField(label='Contact Name', max_length=256)
    contact_phone_num = forms.CharField(label='Contact Phone number', max_length=13)
    contact_email = forms.EmailField(label='Contact Email')
    place_of_contact = forms.CharField(label='Address of place of contact', max_length=256)
    postcode = forms.CharField(label='Postcode', max_length=8)

It currently will display the correct case_id and case_name but does not retain their values in the post request from the second form

What you’re calling the first form isn’t a form - it’s a template fragment.
What you’re calling the “template for the second form” is actually the second form.
The template would be contactForm.html

Also, contactForm.html is only going to be rendered if the form is invalid. If the form is valid, you’re going to redirect to a view identified by a url /poscase/ - and you’re not transferring any sort of id to identify what is supposed to be rendered at that location.

From your description and from what I’m seeing, what’s actually happening is that your form has some error.

You should create a form for your first entry - trying to manually handle input fields is prone to errors. (It can be done, but it’s rarely worthwhile.)

If nothing else, you should add some error handling on your form to display whatever errors may be encountered. See Rendering form error messages.

Actually, I might suggest you review the entire Working with Forms page to help you organize your view, forms and templates.