简体   繁体   English

IntegrityError: (1451, '无法删除或更新父行:外键约束失败 (..))

[英]IntegrityError: (1451, 'Cannot delete or update a parent row: a foreign key constraint fails (..))

when deleting users with schedule_files I got this:使用 schedule_files 删除用户时,我得到了这个:

IntegrityError at /admin/auth/user/166/delete/ (1451, 'Cannot delete or update a parent row: a foreign key constraint fails ( vacation . vacations_schedulefile , CONSTRAINT vacations_schedulefile_user_id_e85fa52f_fk_auth_user_id FOREIGN KEY ( user_id ) REFERENCES auth_user ( id ))') IntegrityError在/管理/认证/用户/ 166 /删除/(1451, '不能删除或更新父行,外键约束失败( vacationvacations_schedulefile ,约束vacations_schedulefile_user_id_e85fa52f_fk_auth_user_id外键( user_id )参考auth_userid ))')

My models are:我的模型是:

class ScheduleFile(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    added = models.DateTimeField(default=django.utils.timezone.now)

    def __str__(self):
        return '[User ID: {}] {}'.format(str(self.user.id), self.user.username)

And并且

class VacationEvent(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    schedule_type = models.CharField(choices=SCHEDULE_TYPES, default=STRICT_TIME, max_length=3)
    exclude_fba_from_chatzos = models.BooleanField(default=False)
    schedule_file = models.ForeignKey(ScheduleFile, on_delete=models.CASCADE, null=True)
    status = models.CharField(verbose_name="status event", choices=EVENT_STATUSES, max_length=3, default=CREATED)

And User(AbstractUser) I decided to create pre_delete signal and delete relative objects of schedule model:而 User(AbstractUser) 我决定创建 pre_delete 信号并删除调度模型的相关对象:

@receiver(pre_delete, dispatch_uid='User')
def user_del(sender, instance, **kwargs):
    i = instance
    events = VacationEvent.objects.filter(user_id=166)
    schedule = prefetch_related_objects(events, 'schedule_file__user')
    schedule.delete()

# instance.user.schedulefile_set.clear()
# qs = VacationEvent.objects.filter(user_id=166).prefetch_related_('schedule_file')
# qs.delete()


# b = ScheduleFile.objects.filter(user_id=166)
# e = VacationEvent.objects.filter(user_id=166)
# e.schedule_file.remove(b)

But it returns 'NoneType' object has no attribute 'delete'.但它返回 'NoneType' 对象没有属性 'delete'。 How can I do it right?我怎样才能做对? Thanks for any help.谢谢你的帮助。

you can not delete ScheduleFile because it's primary key is required by VacationEvent so you have to delete VacationEvent record before the ScheduleFile model this can be done in several way by signal or overriding delete function on ScheduleFile model您不能删除 ScheduleFile,因为 VacationEvent 需要它的主键,因此您必须在 ScheduleFile 模型之前删除 VacationEvent 记录,这可以通过信号或覆盖 ScheduleFile 模型上的删除功能以多种方式完成

example:例子:

def delete(self, using=None):
    if self.schedule_file:
        self.schedule_file.delete()
    super(ScheduleFile, self).delete(using)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 (pymysql.err.IntegrityError)(1451,'无法删除或更新父行:外键约束失败...') - (pymysql.err.IntegrityError) (1451, 'Cannot delete or update a parent row: a foreign key constraint fails…') in Flask 无法删除或更新父行:外键约束失败 SQL 错误 - Cannot delete or update a parent row: a foreign key constraint fails SQL error IntegrityError(1452,'无法添加或更新子行:外键约束失败) - IntegrityError (1452, 'Cannot add or update a child row: a foreign key constraint fails) 如何修复 IntegrityError:(psycopg2.errors.ForeignKeyViolation)更新或删除表“用户”违反外键约束 - How to fix IntegrityError: (psycopg2.errors.ForeignKeyViolation) update or delete on table "users" violates foreign key constraint Python Sqlalchemy mysql“无法添加或更新子行:外键约束失败” - Python Sqlalchemy mysql “Cannot add or update a child row: a foreign key constraint fails” 错误1452(23000):无法添加或更新子行:外键约束失败我无法修复 - ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails That I can't fix 无法添加或更新子行:Django生成的MySQL表上的外键约束失败 - Cannot add or update a child row: a foreign key constraint fails on a Django generated MySQL table IntegrityError:外键约束失败 - IntegrityError: FOREIGN KEY constraint failed 完整性错误。 在表上插入或更新违反外键约束 - IntegrityError at. insert or update on table violates foreign key constraint _mysql_exceptions.IntegrityError: (1215, '不能添加外键约束') - _mysql_exceptions.IntegrityError: (1215, 'Cannot add foreign key constraint')
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM