为了账号安全,请及时绑定邮箱和手机立即绑定

是否有更简单的方法将bulk_create() 与许多查询一起使用来实例创建项目

是否有更简单的方法将bulk_create() 与许多查询一起使用来实例创建项目

有只小跳蛙 2023-10-06 18:38:17
尝试一下这个(参见我上面的评论)import pandas as pddata = []for k, v in test['reports'].items():    model_name = k    for model in v.items():        _data = {}        _data['model'] = model_name        _data['id'] = model[0]        _data['message'] = model[1]['message']        _data['timestamp'] = model[1]['timestamp']        data.append(_data)df = pd.DataFrame(data)728115  我根本不懂基本编程,几个月前刚刚学习了 python 和 Django,由于迫切需要,我决定创建自己的程序来支持我的部门和团队 程序运行后,我想让它变得更容易对于用户来说,在我环顾四周之后,建议使用bulk_create和ajax JavaScript,绝对不使用JavaScript。在寻找使用bulk_create的方法之后,我发现它效率很低,例如:instance = get_object_or_404(Audit, id=766)item1 = get_object_or_404(Item.objects.filter(aspek=instance.aspek_audit).filter(active=True),id=1)item2 = get_object_or_404(Item.objects.filter(aspek=instance.aspek_audit).filter(active=True),id=2)item3 = get_object_or_404(Item.objects.filter(aspek=instance.aspek_audit).filter(active=True),id=3)item4 = get_object_or_404(Item.objects.filter(aspek=instance.aspek_audit).filter(active=True),id=4)item5 = get_object_or_404(Item.objects.filter(aspek=instance.aspek_audit).filter(active=True),id=5)item6 = get_object_or_404(Item.objects.filter(aspek=instance.aspek_audit).filter(active=True),id=6)item7 = get_object_or_404(Item.objects.filter(aspek=instance.aspek_audit).filter(active=True),id=7)item8 = get_object_or_404(Item.objects.filter(aspek=instance.aspek_audit).filter(active=True),id=8)item9 = get_object_or_404(Item.objects.filter(aspek=instance.aspek_audit).filter(active=True),id=9)item10 = get_object_or_404(Item.objects.filter(aspek=instance.aspek_audit).filter(active=True),id=10)item11 = get_object_or_404(Item.objects.filter(aspek=instance.aspek_audit).filter(active=True),id=11)item12 = get_object_or_404(Item.objects.filter(aspek=instance.aspek_audit).filter(active=True),id=12)]AuditItem.objects.bulk_create(audit_mie)除了上面的方法之外还有更简单的方法吗?如果没有,那么我坚持下去,通过在每个项目 id 中创建对象(当前大约为 130),并将其分组为 8 个(当前)bulk_create() 方法。
查看完整描述

1 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

您可以使用列表来保存所有项目,并使用 for 循环来迭代它们。


items = []

audit_mie = []

instance = get_object_or_404(Audit, id=766)


#the range is the starting and ending range, it will count from 1 to 12

for i in range(1,13)

    tmp = (get_object_or_404(Item.objects.filter(aspek=instance.aspek_audit).filter(active=True),id=i))

    items.append(tmp)

    audit_mie.append(AuditItem(audit=instance,item=tmp,kategori=tmp.kategori.kategori))


AuditItem.objects.bulk_create(audit_mie)

items[1]迭代列表的 for 循环将允许您在需要时使用或您特别想要访问的任何项目(如果需要) 转到特定项目。如果需要,此资源应该可以帮助您理解列表,并且这应该有助于 for 循环



查看完整回答
反对 回复 2023-10-06
  • 1 回答
  • 0 关注
  • 53 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信