Python Django bulk_为MySQL上的多个字段创建
我有一个模型:Python Django bulk_为MySQL上的多个字段创建,python,django,orm,Python,Django,Orm,我有一个模型: class Content(models.Model): can_see = m.ManyToManyField('users.User',blank=True,related_name='can_see') can_edit = m.ManyToManyField('users.User',blank=True,related_name='can_edit') can_delete
class Content(models.Model):
can_see = m.ManyToManyField('users.User',blank=True,related_name='can_see')
can_edit = m.ManyToManyField('users.User',blank=True,related_name='can_edit')
can_delete = m.ManyToManyField('users.User',blank=True,related_name='can_delete')
text = m.CharField(max_length=160, blank=True)
name = m.CharField(max_length=160, blank=True)
我尝试使用批量创建来创建许多“内容”,并让用户通过填写以下字段来选择哪些用户可以管理内容:
def handle_csv(request):
if request.method == 'POST':
form = UploadCSVForm(request.POST, request.FILES)
if form.is_valid():
data_can_see = form.cleaned_data['can_see']
data_can_edit = form.cleaned_data['can_edit']
data_can_delete = form.cleaned_data['can_delete']
csvfile = TextIOWrapper(request.FILES['csvfile'].file, encoding='utf-8')
table = csv.reader(csvfile)
created = Content.objects.bulk_create([Content(text=data[0],name=data[1]) for data in table])
...
return render(request, 'importing/success.html')
我现在希望添加manytomany关系,以便为所选用户提供我想要的内容对象权限,但我无法在批量创建中设置m2m关系
我试过这个:
for content in created:
content.can_see.set(data_can_see)
content.can_edit.set(data_can_edit)
content.can_delete.set(data_can_delete)
但它不起作用,因为它说在可以设置m2m关系之前,对象需要有一个ID
,我不明白为什么我的对象列表没有ID
。
我想我不明白如何使用bulk_create创建多个对象
我还尝试在上面提到的循环中添加content.save()
,但这会导致创建两组对象,一组有关系,另一组没有关系
有人能为我指出正确的方向来理解批量创建并解决此问题吗?如文档中所述:“如果模型的主键是自动字段,则只能在某些数据库(当前为PostgreSQL和MariaDB 10.5+)上检索主键属性。在其他数据库上,将不会设置该属性。”。因此,
bulk\u create
不会为构建的对象设置主键。