You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为以movie_id为主键的Django Film模型添加自动递增数字字段

如何在Django模型中保留自定义主键的同时添加自动递增长序号字段?

没问题,我懂你的需求——你已经把movie_id设为Film模型的主键,但还想要一个像默认id那样自动递增的行号字段,用来标记表中的行顺序对吧?这完全可以实现,只需要手动添加一个自动递增字段就行,不会影响你现有的movie_id主键。

直接修改你的模型代码,加上这一行就好:

class Film(models.Model):
    title = models.CharField(max_length=200)
    movie_id = models.CharField(max_length=8, unique=True, primary_key=True)
    director = models.ForeignKey('Director', on_delete=models.SET_NULL, null=True)
    year = models.IntegerField(null=True)
    genres = models.ManyToManyField(Genre)
    # 新增自动递增的行号字段
    row_number = models.BigAutoField(unique=True)

几点说明:

  • 这里用BigAutoField而不是AutoField是因为它支持更大的数值范围(从1到9223372036854775807),比AutoField的整数范围更适合未来数据量增长的情况。
  • unique=True保证这个行号字段的值不会重复,和默认id的行为一致。
  • 因为你已经指定了movie_id作为主键,Django不会再自动生成默认的id字段,我们手动添加的row_number完全独立,不会干扰movie_id的主键功能。

最后别忘了执行迁移:

在终端运行以下命令,把这个字段同步到数据库:

python manage.py makemigrations
python manage.py migrate

如果你的表已经有现有数据,Django会自动为已有记录填充递增的row_number值,不用手动处理~

内容的提问来源于stack exchange,提问作者Vitali Skripka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:28:59