我有一个使用Django后端的Web服务设置,我试图删除Field对象的条目。每个字段都分配给一个用户,并且在该字段中完成了许多评估。评估通过外键链接到字段。删除字段对象后,我还想删除该Field
的所有评估,但保留用户。
我使用了on_deletion
参数,如果我将其设置为CASCADE
,则Django管理页面会向我显示所有关联的评估对象(如果我尝试删除Field对象)。但是,我仍然收到以下错误:
/ admin / dfto / field /上的IntegrityError更新或删除表“ field” 违反表上的外键约束“ assessmentment_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'
有人可以向我解释为什么我会收到此错误和/或为我提供修复程序吗?
答案 0 :(得分:0)
我认为这是因为field_uuid的参数为'models.CASCADE',所以当您删除它时,django也会尝试删除对该特定键的所有引用,而不知道如何解决它。