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

Django模型迁移报错:id字段需设primary_key=True及应用识别问题

解决Django模型同步PostgreSQL的问题

核心id字段错误修复

报错(models.E004) 'id' can only be used as a field name if the field also sets 'primary_key=True'是因为Django对id字段有强制规则:手动定义id时必须指定它为主键。修改模型代码如下:

from django.db import models

class Posts(models.Model):
    id = models.PositiveIntegerField(primary_key=True)  # 补充primary_key=True
    rubrics = models.CharField(max_length=100)
    created_date = models.DateTimeField()
    text = models.TextField()

删id/加primary_key仍报错的解决方法

大概率是旧迁移文件或缓存残留导致的,按以下步骤清理:

  • 删除应用目录下migrations文件夹中除__init__.py外的所有文件
  • 清理Django缓存:执行python manage.py clearcache
  • 重新生成迁移文件:python manage.py makemigrations
  • 执行迁移同步数据库:python manage.py migrate

应用识别问题排查

如果Django无法识别目标应用,按以下步骤确认:

  1. 检查项目settings.py的INSTALLED_APPS列表,确保已正确添加你的应用(比如text_modifier),示例:
INSTALLED_APPS = [
    # ...其他默认应用
    'text_modifier',
]
  1. 执行命令时确保处于项目根目录(包含manage.py的目录),无需手动设置DJANGO_SETTINGS_MODULE,直接用python manage.py开头的命令即可自动读取配置。

额外提示

如果不需要自定义id字段的类型,完全可以删掉手动定义的id,Django会自动生成一个自增的BigAutoField类型id主键,同样能满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:22:23