Я запустил inspectdb в моей схеме. Сначала определения очень правильные:
class Diagnosis(models.Model):
id = models.BigIntegerField(primary_key=True)
code = models.CharField(max_length=255)
starting_node = models.ForeignKey('Node', models.DO_NOTHING, blank=True, null=True)
class Meta:
managed = False
db_table = 'diagnosis'
class DiagnosisTranslation(models.Model):
id = models.IntegerField(primary_key=True)
language = models.CharField(max_length=10)
title = models.CharField(max_length=255, blank=True, null=True)
description = models.TextField(blank=True, null=True)
diagnosis = models.ForeignKey(Diagnosis, models.DO_NOTHING, blank=True, null=True)
class Meta:
managed = False
db_table = 'diagnosis_translation'
Затем я добавил последовательности и значения по умолчанию (postgresql) для идентификаторов:
CREATE SEQUENCE diagnosis_id_seq START WITH 100000 INCREMENT BY 1;
ALTER TABLE diagnosis ALTER COLUMN id SET default nextval('diagnosis_id_seq');
CREATE SEQUENCE diagnosis_translation_id_seq START WITH 100000 INCREMENT BY 1;
ALTER TABLE diagnosis_translation ALTER COLUMN id SET default nextval('diagnosis_translation_id_seq');
Я перезапустил python manage.py inspect
и результат корректно изменяется для диагностики, но не для другой таблицы, в нем отсутствует атрибут id:
class Diagnosis(models.Model):
id = models.BigAutoField(primary_key=True)
code = models.CharField(max_length=255)
starting_node = models.ForeignKey('Node', models.DO_NOTHING, blank=True, null=True)
class Meta:
managed = False
db_table = 'diagnosis'
class DiagnosisTranslation(models.Model):
# Where's the ID ??
language = models.CharField(max_length=10)
title = models.CharField(max_length=255, blank=True, null=True)
description = models.TextField(blank=True, null=True)
diagnosis = models.ForeignKey(Diagnosis, models.DO_NOTHING, blank=True, null=True)
class Meta:
managed = False
db_table = 'diagnosis_translation'
Почему Django пропускает идентификаторы для некоторых таблиц, а не для других ? Особенно, почему это происходит только тогда, когда я автоматически добавляю поля id?