Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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
Python 序列化模型列表时,获取“QuerySet”对象没有属性“\u meta”错误_Python_Django_Python 3.x - Fatal编程技术网

Python 序列化模型列表时,获取“QuerySet”对象没有属性“\u meta”错误

Python 序列化模型列表时,获取“QuerySet”对象没有属性“\u meta”错误,python,django,python-3.x,Python,Django,Python 3.x,我理解这个特殊的错误信息 “QuerySet”对象没有属性“\u meta” 关于StackOverflow已经讨论了很多,我已经给出了很多答案,但每个答案都是独一无二的,并没有解决我的问题 因此,我有一个从数据库获得的过滤模型对象列表: questions_by_category = Question.objects.filter(category=category_id) 我想在会话中保存此列表,如下所示: request.session["questions"] = json.dumps

我理解这个特殊的错误信息

“QuerySet”对象没有属性“\u meta”

关于StackOverflow已经讨论了很多,我已经给出了很多答案,但每个答案都是独一无二的,并没有解决我的问题

因此,我有一个从数据库获得的过滤模型对象列表:

questions_by_category = Question.objects.filter(category=category_id)
我想在会话中保存此列表,如下所示:

request.session["questions"] = json.dumps(model_to_dict(questions_by_category))
但我从这一行中得到了错误信息:

model_to_dict(questions_by_category)
这是模型类:

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    correct_answer = models.CharField(max_length=20)
    publication_date = models.DateTimeField('date_published', default=django
                                            .utils.timezone.now)
    question_hint = models.CharField(max_length=200, default='hint')
    question_thumbnail = models.ImageField(upload_to='gallery', height_field=None, width_field=None,
                                           max_length=100,
                                           default='images/pyramid.jpg')
    category = models.ForeignKey(QuestionCategory, on_delete=models.SET_NULL, null=True)
    difficulty_level = models.IntegerField(default=10)

    def was_published_recently(self):
        return self.publication_date >= timezone.now() - datetime.timedelta(days=1)

    class Meta:
        db_table = 'question'

    def __str__(self):
        return self.question_text

    def serialize(self):
        return self.__dict__
以及以下观点:

def question(request, category_name, category_id):
    questions_by_category = Question.objects.filter(category=category_id)
    current_question = questions_by_category.iterator().__next__()
    choice = current_question.choice_set.get()

    form = ChoiceForm(request.POST)

    request.session["questions"] = json.dumps(model_to_dict(questions_by_category))

    context = {
        'question': current_question, 'choice': choice, 'form': form
    }

    return render(request, 'quiz/question.html', context)
编辑

这是我打算修改列表的另一个视图:

def accept_choice(request):
global data
if request.method == 'POST':
    data = request.POST.get('choiceRadioGroup')
    print('Selected data: ' + str(data))

return render(request, 'quiz/question.html', {'data': 'data'}
这里开始出现混乱的目标是从“问题”视图中选择“接受选项”,单击“下一步”按钮,调用“接受选项”,并显示下一个问题id。我的意图是通过在一次会议中维护问题列表来跟踪当前问题


我非常希望你能解释一下我做错了什么,以及正确的做法。

因为顾名思义,model_to_dict需要的是一个模型,而不是查询集。但你为什么要这样做呢?为什么要将查询集保存到会话?你为什么要把它转换成口述呢?那你为什么要把它转换成JSON字符串呢?@DanielRoseman我对这个有点陌生,所以有点困惑。我试图在会话中保存列表,因为我想在从不同视图中删除或添加项目后访问列表。请看这里:我可能只想保存问题ID,而不是整个查询集。修改此列表的其他视图看起来如何?因为顾名思义,model_to_dict需要的是一个模型,而不是查询集。但为什么要这样做?为什么要将查询集保存到会话?你为什么要把它转换成口述呢?那你为什么要把它转换成JSON字符串呢?@DanielRoseman我对这个有点陌生,所以有点困惑。我试图在会话中保存列表,因为我想在从不同视图中删除或添加项目后访问列表。请看这里:我可能只想保存问题ID,而不是整个查询集。修改此列表的其他视图的外观如何?