我有一张postgres表:
Table "public.channels"
Column | Type | Modifiers | Storage | Stats target | Description
------------+-----------------------------+-------------------------------------------------------+----------+--------------+-------------
id | integer | not null default nextval('channels_id_seq'::regclass) | plain | |
area | character varying(12) | not null | extended | |
measure | integer |
Indexes:
"channels_pkey" PRIMARY KEY, btree (id)
我可以使用psql
插入此表格,而我未指定的id
列每次都会增加。我最终在表格中输入了几个条目。
我有这个表的Django模型:
class Channels(models.Model):
area = models.CharField(primary_key=True, max_length=12, editable=True)
measure = models.IntegerField(blank=False, null=False)
def __str__(self):
return str(self.measure)
class Meta:
verbose_name_plural = 'Channels'
managed = False
db_table = 'channels'
我试图像这样插入:
area = 'site b'
for sample in samples:
measure = sample['measure']
ch = Channels(area=area, measure=measure)
ch.save()
将每个测量值插入表中。但是主键不会增加,最后,最后一次测量是表中唯一的测量。它包含来自sample
的最后samples
的数据。
为什么主键不会自动递增,以便每个测量都进入自己的行?
答案 0 :(得分:0)
如果您想指定自定义主键,只需在其中一个字段中指定primary_key = True即可。如果Django看到你明确设置了Field.primary_key,它就不会添加自动id列。
您已将area
设置为主键,因此Django不会更新它。我认为不是制作area
主键,而是可以像以下一样设置它:
area = models.CharField(unique=True, max_length=12, editable=True)