我是django的新手,我正在尝试将用户实例从一个视图传递到另一个视图,然后将数据保存在模型类别中,但是我收到此错误:
ValueError at /bookmark/category/
Cannot assign "45": "Category.user" must be a "User" instance.
书签是我的应用程序的名称。 注册新用户后,他将被重定向到另一个页面,在该页面中,他从下拉列表中选择类别。我希望使用相同的用户ID在Category模型中添加此选定的类别。
这是我的views.py代码:
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()
这是models.py文件
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)
如果这是正确的做法或其他事情要做,有人可以指导吗?谢谢!
答案 0 :(得分:1)
def get_category(request):
cname = request.POST.get("dropdown1")
user = request.session.get('user')
obj=Category(user_id=user,category=cname)
obj.save()
由于用户是外键,因此需要User Instance
才能保存。
因为您拥有该用户的ID,您可以使用user_id
进行保存
答案 1 :(得分:0)
除了obj = Category(user_id = user,category = cname)之外,我的模板中也存在问题。
我写过:
<select multiple = "dropdown1">
这就是我得到Null约束的原因。
我将其修改为
<select name = "dropdown1" multiple>