Python 如何在Django模型查询中使用两个列表插入多个记录
我有三张桌子: 表1、表2、表3 从表1中,我使用以下方法获得数据:Python 如何在Django模型查询中使用两个列表插入多个记录,python,django,list,django-models,django-orm,Python,Django,List,Django Models,Django Orm,我有三张桌子: 表1、表2、表3 从表1中,我使用以下方法获得数据: table1queryset = table1.objects.filter(token = 123) 它给了我50张唱片 从表2中,我使用以下方法获得数据: table2queryset = table2.objects.filter(name='andy') 它给了我10张唱片 表3结构如下: mytoken = models.foreignKey(table1) myname = models.foreignKey
table1queryset = table1.objects.filter(token = 123)
它给了我50张唱片
从表2中,我使用以下方法获得数据:
table2queryset = table2.objects.filter(name='andy')
它给了我10张唱片
表3结构如下:
mytoken = models.foreignKey(table1)
myname = models.foreignKey(table2)
现在,对于每个table1记录,我想将table2记录插入到table3中。比如:
for eachT1 in table1queryset:
for eachT2 in table2queryset:
table3(mytoken=eachT1,myname=eachT2).save()
在我的例子中,它将插入50*10=500条记录
最有效的使用方法是什么?
我是否可以将这两个查询集都分配给查询,例如:
table3(mytoken=table1queryset,myname=table2queryset).save()
请看,有人承诺“使用具有多对多关系的add()将不会调用任何save()方法,而是使用QuerySet.bulk\u create()创建关系。”
如果您在第一个模型中定义了ManyToMany字段,并告诉django此关系必须通过表3(如)工作,您可以执行以下操作:
t2s = [x.id for x in tq2]
for t1 in tq1:
tq.add(*t2s)
而且它可能比创建T3模型的单独实例更有效