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

尝试一下这个(参见我上面的评论)


import pandas as pd



data = []

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() 方法。


有只小跳蛙
浏览 113回答 1
1回答

慕桂英3389331

您可以使用列表来保存所有项目,并使用 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 12for 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 循环。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python