Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django模型查询中使用两个列表插入多个记录_Python_Django_List_Django Models_Django Orm - Fatal编程技术网

Python 如何在Django模型查询中使用两个列表插入多个记录

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

我有三张桌子:

表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(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模型的单独实例更有效