为什么django inspectdb跳过一些ID?
我正在我的模式上运行inspectdb。首先,这些定义非常正确,如下所示:为什么django inspectdb跳过一些ID?,django,Django,我正在我的模式上运行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 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'
然后,我为ID添加了序列和默认值(postgresql):
我再次运行了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而不是其他表的ID?尤其是为什么只有当我使id字段自动递增时才会发生这种情况?如果您没有明确定义主键。德扬戈。因此,在这种情况下,会隐式添加一个字段:
id=models.AutoField(主键=True)
因此,Django将省略显式指定主键:
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'
id = models.AutoField(primary_key=True)