10

If you have 2 views, the first uses modelform that takes inputted information from the user (date of birth, name, phonenumber, etc), and the second uses this information to create a table.

How would you pass the created object in the first view to the next view so you can use it in the second view's template

I'd appreciate any help you can share

2 Answers 2

14

One approach is to put the object into a session in your first view, which you could then retrieve from the request.session in the second view.

def first_view(request):
    my_thing = {'foo' : 'bar'}
    request.session['my_thing'] = my_thing
    return render(request, 'some_template.html')

def second_view(request):
    my_thing = request.session.get('my_thing', None)
    return render(request, 'some_other_template.html', {'my_thing' : my_thing})
Sign up to request clarification or add additional context in comments.

7 Comments

could you clarify what you mean by that? maybe a link to a relevant django document? I'm still learning this stuff Thanks for your reply though!
I added an example to my answer for you.
this looks like it might work for me! One last question though, (bare with me i'm sorry).. how do i call on the saved form from the template? do I call them by what they're called in the template for the first view? Thanks again!
p.s, the my_object in your example = form.save() in my problem.. since I'm saving the inputted stuff..
What is the variable I want to pass is not JSON serializable, like for example, and instance?
|
2

Use a HttpResponseRedirect to direct to the table view w/the newly created object's id. Here's an abbreviated example:

def first(request):
    if request.method == 'POST':
          form = MyModelForm(request.POST, request.FILES)
          if form.is_valid():
               my_model = form.save()

               return HttpResponseRedirect('/second/%s/' % (my_model.pk)) # should actually use reverse here.
      # normal get stuff here

def second(request, my_model_pk):
     my_model = MyModel.objects.get(pk=my_model_pk)

     # return your template w/my model in the context and render

1 Comment

How would you then call on the object though? Would you mind providing a brief example? Thanks!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.