Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.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/1/wordpress/13.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_Django Forms_Primary Key_Increment - Fatal编程技术网

Python 使用一个django表单添加两个对象

Python 使用一个django表单添加两个对象,python,django,django-forms,primary-key,increment,Python,Django,Django Forms,Primary Key,Increment,我要说的是,英语不是我的母语。 所以我的问题是,我在Python/Django中有一个表单,它添加了一个具有名称和函数的简单对象,例如: 功能:程序员 姓名:卡洛斯 我想做的是,当用户添加多个具有相同功能的用户时,让事情变得简单,所以我想,当用户这样做时… 功能:程序员 姓名:迪恩、赛斯、罗曼、罗斯、乔伊、钱德勒 …我的表单将添加6个对象,但问题是当我这样做时,python/django总是尝试使用相同的ID/PK(例如:尝试添加ID/PK=1的所有6个成员)。 我做了一点manuever(在巴



我要说的是,英语不是我的母语。
所以我的问题是,我在Python/Django中有一个表单,它添加了一个具有名称和函数的简单对象,例如:
功能:程序员
姓名:卡洛斯
我想做的是,当用户添加多个具有相同功能的用户时,让事情变得简单,所以我想,当用户这样做时…
功能:程序员
姓名:迪恩、赛斯、罗曼、罗斯、乔伊、钱德勒
…我的表单将添加6个对象,但问题是当我这样做时,python/django总是尝试使用相同的ID/PK(例如:尝试添加ID/PK=1的所有6个成员)。
我做了一点manuever(在巴西我们称之为Gambiara),所以我的代码(在分割对象之后):
form2.name=nombre
form2.pk=主要+1
form2.save()
primary=form2.pk
这主要包括使用这个名为primary的变量来更改PK的值并保存到Postgres。它成功了,现在迪恩是pk/id 1……钱德勒是pk/id 6,而且都是一种形式。
但是,我没有那么幸运,所以当我添加另一个名字时,比如George,系统会尝试使用pk=2。
有没有人知道在没有这个手册的情况下解决这个问题,或者如何改进这个手册来彻底解决这个问题

我的代码(提醒一下,我是python初学者):
objnet=form.save(commit=False)
如果在objnet.netaddr中有“,”,
listaips=objnet.netaddr.split(',')
codeon=1
nomecomum=objnet.nome
对于列表AIPS中的ip:
objnet.netaddr=ip
objnet.nome=nomecomum+“”+str(codeon)
objnet.save()
codeon+=1
其他:
objnet.save()

说明:
我有一个带有IP字段(NetAddress)和char字段(nome)的表单…如果在IP字段中包含“,”,它将添加多个对象,例如:
诺姆=卡洛斯
NetAddress=2.2.2.2,3.3.3.3
它应该在我的数据库中添加carlos_1,IP为2.2.2.2,carlos_2,IP为3.3.3.3。代码确实做到了这一点,但是,他添加了carlos_1,然后,他尝试添加carlos_2,他使用相同的PK,所以他没有添加其他元素,而是覆盖了carlos_1,所以在我的DB中现在只有carlos_2。


谢谢

您遇到了这样的问题,因为
objnet
总是链接到一个对象(因为
form.save()
返回对象)

快速修复:

if ',' in objnet.netaddr:
    listaips = objnet.netaddr.split(',')
    codeon = 1

    for ip in listaips:
        objnet = form.save(commit=False)
        objnet.netaddr = ip
        objnet.nome = objnet.nome + "_" + str(codeon)
        objnet.save()

        codeon+=1
else:
    form.save()

为什么要手动分配PK?它们应该由您的数据库设置。你永远不需要分配它们。是的,我承认这是一个疯狂的人工操作,但在某种程度上我必须改变它,因为否则Django会尝试添加几个具有相同PK的对象,显然会替换我的数据或给我一个PK错误。你需要显示完整的代码。我不知道你在这里干什么。好吧,我们走。我删除了这个手动操作,让基本代码重新开始,而不是试图修复这个混乱…你应该编辑你的问题并将代码放在那里。请使用正确的格式:有一个完整的解释如何做,甚至按钮来帮助。谢谢你的帮助,但仍然没有工作。我试图保存两个名为abc的对象,唯一保存的是abc_2(因此我猜仍然使用相同的PK,并在DB中覆盖)