Автоматический идентификатор не присваивается (Django PostgreSQL)

Я использую бэкенд PostgreSQL 12 с Django 2.2. Для одной конкретной модели сложного проекта (с несколькими приложениями и десятками моделей), модель больше не присваивает автоинкрементный ID. Сама модель безобидна:

class SavedAnalysis(models.Model):
    title = models.CharField(max_length=100)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    sq = models.ForeignKey(SearchQuery, on_delete=models.SET_NULL, null=True, default=None)
    json = models.TextField(blank=True, default='')

    class Meta:
        unique_together = ['title', 'user']
        ordering = ['user', 'title']

Когда я делаю либо SavedAnalysis.objects.create(...), либо создаю экземпляр и вызываю save() на нем явно, id устанавливается в None. Объект создается правильно, только автополе "id", назначенное Django, похоже, не увеличивается.

Этот код работал нормально в течение долгого времени, но недавно мне пришлось перенести базу данных на другую машину, и только эта конкретная модель, похоже, пострадала. Я подозревал, что причиной является sqlsequencereset, но и это не помогло. Теперь я прибегаю к "хаку":

    s = SavedAnalysis(title=title, user=user, sq=q, json=j)
    s.save()

    if s.id is None:
        SavedAnalysis.objects.filter(
            title=title, user=user).update(id=SavedAnalysis.objects.order_by('-id').values_list('id', flat=True)[1] + 1)

Кто-нибудь сталкивался с этим раньше? Я бы предпочел, чтобы ожидаемое поведение работало, а не использовался хак.

Вернуться на верх