Django - 无法从查询集中检索多对多字段

发布于 2025-01-15 21:37:34 字数 373 浏览 3 评论 0原文

我有以下代码:

exercises = Exercise.objects.filter(teacher=request.user.id).values('id', 'question', 'ans1', 'ans2', 'ans3', 'correct', 'unit', 'resol', 'theme', 'img')

这工作正常,但“主题”是一个多对多字段,格式返回 { ..., theme: value } 而不是 { ... , theme: [value1, value2] }

我应该实现什么才能获得所需的格式?

I have the following code:

exercises = Exercise.objects.filter(teacher=request.user.id).values('id', 'question', 'ans1', 'ans2', 'ans3', 'correct', 'unit', 'resol', 'theme', 'img')

This works fine, but the "theme" is a Many to Many Field, the format returns { ..., theme: value } instead of { ..., theme: [value1, value2] }

What should I implement to get the desired format?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我们的影子 2025-01-22 21:37:34

通过执行以下操作使其工作:

try:
    exercises = Exercise.objects.filter(teacher=request.user.id)
    ids = exercises.values_list('id', flat=True)

    reloaded_qs = Exercise.objects.all()
    reloaded_qs.query = pickle.loads(pickle.dumps(ids.query))
    exercise_serializer = ExerciseSerializer(exercises, many=True)

    if exercise_serializer.is_valid:
        for val, q in enumerate(reloaded_qs):
            exercise_serializer.data[val].update(q)

except BaseException as e:
    return JsonResponse({ 'v': False, 'm': str(e) }, safe=False)
 
return JsonResponse(exercise_serializer.data, safe=False)

Made it work by doing the following:

try:
    exercises = Exercise.objects.filter(teacher=request.user.id)
    ids = exercises.values_list('id', flat=True)

    reloaded_qs = Exercise.objects.all()
    reloaded_qs.query = pickle.loads(pickle.dumps(ids.query))
    exercise_serializer = ExerciseSerializer(exercises, many=True)

    if exercise_serializer.is_valid:
        for val, q in enumerate(reloaded_qs):
            exercise_serializer.data[val].update(q)

except BaseException as e:
    return JsonResponse({ 'v': False, 'm': str(e) }, safe=False)
 
return JsonResponse(exercise_serializer.data, safe=False)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文