在bulk_create()之后出现AutoField的IntegrityError

时间:2018-08-12 16:28:22

标签: python django postgresql

做完bulk_create之后,我试图向表中添加一些元素,但是遇到了IntegrityError,因为使用save()时序列仍然以1开头。

在bulk_create之后,是否有任何方法可以在Django中更新序列?还是我应该使用最大过滤器自己生成ID?

我正在使用Postgre数据库。

以下是我的代码示例: elementsIdentifiants对象的列表(为了确保一切正常,我先尝试将列表导入“转储”数据库中)

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}))

我遇到了多个表的问题。我总是用表格添加元素。

0 个答案:

没有答案