关于Django中model字段设置自增的问题

最近在写自己的毕设项目的时候,在设计表的时候看到,发现设置的主键(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的,这样才可以让主键为自增~

本博客所有文章如无特别注明均为原创。作者:止语复制或转载请以超链接形式注明转自 止语
原文地址《关于Django中model字段设置自增的问题

相关推荐

网友评论(2)

写的很好,支持一下
丘八阅读网 5年前 (2019-07-05) 回复
推荐大家一个靠谱的论文检测平台。重复的部分有详细出处以及具体修改意见,能直接在文章上做修改,全部改完一键下载就搞定了。怕麻烦的话,还能用它自带的降重功能。哦对了,他们现在正在做毕业季活动, 赠送很多免费字数,可以说是十分划算了!地址是:http://www.paperpass.com/
凌乱 6年前 (2019-05-09) 回复