Python 序列化模型列表时,获取“QuerySet”对象没有属性“\u meta”错误
我理解这个特殊的错误信息 “QuerySet”对象没有属性“\u meta” 关于StackOverflow已经讨论了很多,我已经给出了很多答案,但每个答案都是独一无二的,并没有解决我的问题 因此,我有一个从数据库获得的过滤模型对象列表: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
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,而不是整个查询集。修改此列表的其他视图的外观如何?