Swati Singh
Swati Singh

Reputation: 21

Passing user instance from one view to another in django

I am new to django and i am trying to pass user instance from one view to another and then save data in model Category but i get this error:

ValueError at /bookmark/category/
Cannot assign "45": "Category.user" must be a "User" instance.

bookmark is the name of my application. After registering a new user, he is redirected to another page where he selects category from a dropdown list. I wish to add this selected category in Category model with the same userid.

This is my views.py code:

def register(request):

    if request.method == 'POST':
        form = signUpForm(request.POST) 
        if form.is_valid():
            user = form.save()
            request.session['user'] = user.pk
            return render(request,'category.html')

def get_category(request):

    cname = request.POST.get("dropdown1")
    user = request.session.get('user')
    obj=Category(user=user,category=cname)
    obj.save()

This is models.py file

from __future__ import unicode_literals

from django.db import models


from django.contrib.auth.models import User


class Category(models.Model):

    user = models.ForeignKey(User)
    category= models.CharField(max_length=100)

Can someone please guide if this is the right approach or something else is to be done?Thanks!

Upvotes: 0

Views: 1002

Answers (2)

Swati Singh
Swati Singh

Reputation: 21

In addition to obj=Category(user_id=user,category=cname) there was also problem in my template.

I had written :

<select multiple = "dropdown1">

That is why i was getting Null constraint.

I modified it to

 <select name = "dropdown1" multiple>

Upvotes: 0

Exprator
Exprator

Reputation: 27543

def get_category(request):

    cname = request.POST.get("dropdown1")
    user = request.session.get('user')
    obj=Category(user_id=user,category=cname)
    obj.save()

as user is a foreign key it needs an User Instance to get saved.

as you are having the id of the user you can use user_id for saving it

Upvotes: 1

Related Questions