最近在写自己的毕设项目的时候,在设计表的时候看到,发现设置的主键(id)字段不会自动增长..
而且我们可以看到没有自动增长的这个属性,于是我去网上找了一下,看到网上说直接:sid = models.IntegerField(primary_key=True)
设置primary_key就可以了,但是并不是这样子就可以解决这个问题的..
于是又翻看了网上的答案,基本都是这样子的,但是还是找到了一个答案:tid = models.AutoField(primary_key=True)
将IntegerField替换为AutoField就可以了~
其实呢,我们在没有设置主键的情况下(model会自动生成id为主键,而且还是自增的~)
我们可以看一下我现在设置的:
class Sort(models.Model):
sid = models.IntegerField(primary_key=True)
sortname = models.CharField(max_length=255)
taxis = models.IntegerField(default=0)
description = models.TextField()
class Meta:
db_table = "sort"
我们可以看到主键这块是我自己直接在model里面设置的,这个时候我们直接去数据库添加一条数据:
这里面我们不填写sid这个字段
我们可以看到这里面添加的时候报错了,而且我们可以看到sid这个字段添加的时候是null
emm, 这样看来我们自己设置的主键想让他自增需要用到的是AutoField
这个类型的字段
正确的写法
class Tag(models.Model):
tid = models.AutoField(primary_key=True)
tagname = models.CharField(max_length=60)
gid = models.TextField()
class Meta:
db_table = "tag"
我们可以看到我们自己设置的主键字段为AutoField
我们可以看到里面tid不是null了
我们可以看到tid是自动生成的,插入的时候只是插入了后两个字段~
总结
总结一下吧:
不设置主键的时候,迁移后会自动生成id为主键且自增的字段
主动设置主键且我们的主键需要自增的时候,我们需要将该字段的类型设置为
AutoField
的,这样才可以让主键为自增~