';用户';对象在Django 1.11.8中不可移植
我有一个模型,它为用户提供了一个';用户';对象在Django 1.11.8中不可移植,django,django-models,django-views,Django,Django Models,Django Views,我有一个模型,它为用户提供了一个ManyToManyField,我想在登录用户在Choice模型中提交表单时记录他/她,但此代码阻止了我这样做。我使用了login\u requireddecorator来强制用户首先登录(实际上这就是我想要的) models.py: 来自django.db导入模型的 从django.contrib.auth.models导入用户 问题(选择)( (“选择1”,“选择1”), (“选择2”,“选择2”), (“选择3”,“选择3”), ) 课程选择(models.
ManyToManyField
,我想在登录用户在Choice
模型中提交表单时记录他/她,但此代码阻止了我这样做。我使用了login\u required
decorator来强制用户首先登录(实际上这就是我想要的)
models.py:
来自django.db导入模型的
从django.contrib.auth.models导入用户
问题(选择)(
(“选择1”,“选择1”),
(“选择2”,“选择2”),
(“选择3”,“选择3”),
)
课程选择(models.Model):
用户=模型.ManyToManyField(用户)
choices=models.CharField(最大长度=256,choices=QUESTION\u choices,unique=True)
投票=models.IntegerField(默认值=0)
定义(自我):
返回self.choices++“-++”str(self.vote)
views.py:
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from .models import Choice
@login_required
def index(request):
food = request.POST.get('sunday')
user_v = None
get_choices = Choice.objects.values('choices', 'vote')
new_choices = list(get_choices)
for q in new_choices:
choice = q['choices']
vote_v = q['vote']
if food:
if food == choice:
if request.user.is_authenticated():
user_v = request.user
print(user_v) # it prints out correctly after sucessful form submit
vote_v += 1
model_conn = Choice.objects.get(choices=choice)
model_conn.vote = vote_v
model_conn.users = user_v # this is where I get an error
model_conn.save()
return render(request, 'index.html', {})
您正在为用户使用多个字段,因此需要使用
add
方法将当前用户添加到用户列表中:
model_conn.users.add(user_v)
如果需要先清除相关用户列表,可以使用清除:
model_conn.users.clear()
model_conn.users.add(user_v)