我在django rest中有两个模型:
class CustomUser(AbstractBaseUser):
email = models.EmailField(max_length=255, unique=True)
class Teacher(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
删除教师示例时,如何删除相关的CustomUser示例?
我尝试了这段代码,但它给出了这个错误“调用Python对象时超过了最大递归深度”
@receiver(pre_delete, sender=Teacher)
def delete_user(sender, instance, **kwargs):
instance.user.delete()
2条答案
按热度按时间aoyhnmkz1#
问题是你使用的是pre_delete信号,因此它会先删除CustomUser。CustomUser的删除会级联并删除你的Teacher,但在删除Teacher之前,信号会被再次调用,从而导致无限循环。
将@receiver上的pre_delete更改为post_delete。
5gfr0r5j2#
在www.example.com中settings.py,将此代码行写在INSTALLED_APPS之后。
Models.py:
View.py 或如果您有单独的Signals.py:
试试这个代码。