python - 字段删除时出现 IntegrityError 的原因?
问题描述
我有一个带有 Django 后端的 web 服务设置,我正在尝试删除我的 Field 对象的条目。每个字段都分配给一个用户,并且在该字段中完成了许多评估。评估通过外键链接到字段。删除 Field 对象后,我还想删除所有的评估Field
,但保留用户。
我玩弄了这个on_deletion
参数,如果我将它设置CASCADE
为 Django 管理页面,如果我尝试删除 Field 对象,则会显示所有关联的评估对象。但是,我仍然收到以下错误:
IntegrityError at /admin/dfto/field/ update or delete on table "field" 违反了表 "assesment" 上的外键约束 "assessment_field_uuid_fkey" DETAIL: Key (uuid)=(f3a52c10-33be-42f9-995d-482025cea17b) 仍然被引用从表“评估”。
这些是我的参考模型:
class Assessment(models.Model):
uuid = models.TextField(primary_key=True)
longitude = models.FloatField(blank=True, null=True)
latitude = models.FloatField(blank=True, null=True)
field_uuid = models.ForeignKey('Field', models.CASCADE, db_column='field_uuid',blank=True, null=True, related_name='assessments')
class Meta:
db_table = 'assessment'
class Field(models.Model):
uuid = models.TextField(primary_key=True)
name = models.CharField(max_length=50, blank=True, null=True)
country = models.CharField(max_length=50, blank=True, null=True)
user_email = models.ForeignKey('User', models.DO_NOTHING, db_column='user_email')
crop_uuid = models.ForeignKey(Crop, models.CASCADE, db_column='crop_uuid')
class Meta:
db_table = 'field'
有人可以向我解释为什么我会收到此错误和/或为我提供修复吗?
解决方案
我认为这是因为 field_uuid 有参数“models.CASCADE”所以当你删除它时,django 也会尝试删除对这个特定键的任何引用,但不知道如何修复它。
推荐阅读
- go - Go build: cgo fork/exec 权限被拒绝错误
- android - 如何从 Kotlin 中的另一个类重新分配变量?
- javascript - 如何在 JavaScript 中将列表转换为 JSON?
- javascript - 在 React 中处理 Themoviedb 的分页请求
- python - 同时从多个请求更新同一个数据库对象
- r - R CMD 默认为 Linux 终端中的 R 版本选择屏幕
- vue.js - 如何为 vue-cli-service 设置 http 标头?(SharedArrayBuffer)
- cadence-workflow - 如何设置 Cadence 测试工作流 id?
- testing - 如何自定义 Qmetry Reporter 日志记录?
- c++ - 编写一个程序来运行 2 个进程并在第一个运行 ls 并在另一个运行 ps