Reputation: 21
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
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
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