Django添加User模型条目时报FileNotFoundError错误该如何排查?
问题原因及解决方案
- 命名冲突:你自定义的模型命名为
User,和Django auth认证模块自带的默认用户模型重名,易出现命名空间冲突导致写入异常。建议将自定义模型重命名为CustomUser等不冲突的名称,修改后重新同步数据库。如果需要使用Django自带的认证相关功能,建议继承AbstractUser来扩展用户字段,而不是完全自定义用户模型,也可以避免命名冲突问题。 - 字段未设置空许可/默认值:
User模型下所有字段均未设置null=True、blank=True或默认值,新增数据时只要有任意字段未赋值就会触发校验失败:Points为整数字段,无默认值,新增时必须传入合法数值SaleItem为关联Item的外键,新增User时必须选择一个已存在的Item条目关联,否则会触发外键约束报错ProfilePic、BannerPic为FilePathField类型,填入的路径必须是运行Django服务的设备上真实存在的合法路径,路径不存在会校验失败
- 主键定义错误:你手动定义主键使用了
IntegerField(auto_created=True),该配置无法实现自增主键逻辑,Django自增主键需要使用AutoField或BigAutoField类型。当前配置下插入数据时会要求你手动传入唯一ID值,否则会报错。你可以直接删除自定义的ID主键字段,Django会默认生成自增的id主键,无需手动定义。 - 模型变更未同步到数据库:如果你修改过
User模型的字段配置但未执行迁移命令,会导致数据库表结构和模型定义不一致,写入时触发报错。修改模型后需要执行以下命令同步变更:python manage.py makemigrations python manage.py migrate - 关联模型逻辑错误:
Friendship模型下定义了两个关联User的多对多字段,不符合好友关系的设计逻辑,也会间接影响关联表的写入校验。建议将该模型的多对多字段修改为两个外键分别指向发起方和接收方用户,再设置联合唯一约束即可。
内容的提问来源于stack exchange,提问作者user10589862
相关产品推荐
相关产品推荐

