Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
';用户';对象在Django 1.11.8中不可移植_Django_Django Models_Django Views - Fatal编程技术网

';用户';对象在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)