You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django视图for循环仅向PostgreSQL存入单条数据问题求助

问题原因及解决方案

问题核心是**return HttpResponse('saved')被写在了for循环内部**,导致循环刚执行第一次就直接返回响应,后续的数据完全没机会存入数据库。

修正后的代码

views.py 修复版

def quiz_automate(request):
    val = automate_data()
    get_quiz = Quiz.objects.get(subject='english', exam_type='jamb')
    for data in val['data']:
        print(data['question'])
        d_question = Question(text=data['question'], quiz=get_quiz)
        d_question.save()
    # 把return移到循环外面,确保所有数据处理完成后再返回
    return HttpResponse('所有数据已保存')

额外优化建议

  • 数据量较大时,用bulk_create批量插入比循环调用save()效率高很多:
def quiz_automate(request):
    val = automate_data()
    get_quiz = Quiz.objects.get(subject='english', exam_type='jamb')
    # 先构建所有Question对象的列表
    question_list = [
        Question(text=data['question'], quiz=get_quiz)
        for data in val['data']
    ]
    # 批量插入数据库
    Question.objects.bulk_create(question_list)
    return HttpResponse('所有数据已批量保存')
  • 注意Quiz.objects.get()如果找不到匹配对象会抛出异常,建议加异常处理避免报错:
from django.core.exceptions import ObjectDoesNotExist

def quiz_automate(request):
    val = automate_data()
    try:
        get_quiz = Quiz.objects.get(subject='english', exam_type='jamb')
    except ObjectDoesNotExist:
        return HttpResponse('对应的Quiz记录不存在')
    
    # 后续数据处理逻辑...
    return HttpResponse('所有数据已保存')

内容的提问来源于stack exchange,提问作者Oladeji Olaoluwa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 07:05:13