【发布时间】:2019-04-15 09:47:59
【问题描述】:
我有一个带有 Django 后端的网络服务设置,我正在尝试删除我的 Field 对象的条目。每个字段都分配给一个用户,并且在该字段中完成了许多评估。评估通过外键链接到字段。删除 Field 对象后,我还想删除该 Field 的所有评估,但保留用户。
我使用了on_deletion 参数,如果我将其设置为CASCADE,如果我尝试删除 Field 对象,Django 管理页面会显示所有关联的评估对象。但是,我仍然收到以下错误:
IntegrityError at /admin/dfto/field/ 更新或删除表“字段” 违反表上的外键约束“assessment_field_uuid_fkey” “评估”细节:关键 (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'
有人可以向我解释为什么我会收到此错误和/或为我提供修复吗?
【问题讨论】:
-
CASCADE此选项会影响 row 删除。不是列。 -
是的,我知道。我不是在谈论列意义上的“字段”。我的模型恰好也被称为“字段”。
-
改成
CASCADE后有没有应用迁移? -
感谢您的提示。我刚才做了。很遗憾没有解决问题。
-
您正试图从 django 管理员中删除,对吗?是否有什么东西阻止管理员删除
Assesment实例?