做完bulk_create
之后,我试图向表中添加一些元素,但是遇到了IntegrityError,因为使用save()
时序列仍然以1开头。
在bulk_create之后,是否有任何方法可以在Django中更新序列?还是我应该使用最大过滤器自己生成ID?
我正在使用Postgre数据库。
以下是我的代码示例:
elements
是Identifiants
对象的列表(为了确保一切正常,我先尝试将列表导入“转储”数据库中)
try:
Identifiants.objects.using('import-check').all().delete()
Identifiants.objects.using('import-check').bulk_create(elements)
except:
traceback.print_exc()
return False
else:
Identifiants.objects.all().delete()
Identifiants.objects.bulk_create(elements)
return True
这是模型
class Identifiants(models.Model):
taxon = models.IntegerField(unique=True)
noms = models.TextField(blank=True, null=True)
fiche = models.IntegerField(blank=True, null=True)
sms = models.NullBooleanField()
我让Django自己创建pk
与该视图有关的进一步插入:
elif req.method == 'POST' and req.POST['action'] == "add":
id_form = AddFormId(req.POST)
nom_form = AddFormNom(req.POST)
search_form = LightSearchForm(req.POST)
if id_form.is_valid() and nom_form.is_valid():
inst = id_form.save(commit = False)
num_fiche = Identifiants.objects.all().aggregate(Max('fiche'))['fiche__max']
num_fiche += 1
inst.fiche = num_fiche
inst.save()
values = nom_form.save(commit = False)
values.taxon = inst
values.codesyno = 0
values.save()
return redirect(reverse(details, kwargs = {'id_item' : values.id}))
我遇到了多个表的问题。我总是用表格添加元素。