【发布时间】:2021-06-13 22:24:44
【问题描述】:
假设我有这个模型:
class UserBook(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, unique=True)
book = models.ForeignKey(Book, on_delete=models.PROTECT)
用户一次只能借一本书。如果用户被删除,我希望此模型的实例被删除,但如果一本书被删除,我不希望它们被删除(错误地,只是预防措施)。
使用上述约束删除用户时的预期行为是什么?我得到:
无法删除模型“UserBook”的某些实例,因为它们是 通过受保护的外键引用
有没有办法实现我想要的?我试图删除 pre_save/post_save 信号上的 UserBook,User 作为发件人,但都没有成功。
【问题讨论】:
-
可能有另一个模型具有
UserBook和on_delete=models.PROTECT的外键。 -
@AbdulAzizBarkat 只是仔细检查了一下,事实并非如此。
标签: django