删除字段时出现IntegrityError的原因?

时间:2019-04-15 09:48:00

标签: python django

我有一个使用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'

有人可以向我解释为什么我会收到此错误和/或为我提供修复程序吗?

1 个答案:

答案 0 :(得分:0)

我认为这是因为field_uuid的参数为'models.CASCADE',所以当您删除它时,django也会尝试删除对该特定键的所有引用,而不知道如何解决它。