如何使用django-notifications修复错误“缺少位置参数:'on_delete'”?

时间:2018-04-23 04:11:41

标签: django notifications typeerror

请帮助我:

File "C:\Python36\lib\site-packages\notifications\models.py", line 170, in Notification
recipient = models.ForeignKey(settings.AUTH_USER_MODEL, blank=False, related_name='notifications')
TypeError: __init__() missing 1 required positional argument: 'on_delete'

2 个答案:

答案 0 :(得分:1)

使用" on_delete = models.CASCADE "在related_name ='通知'

之后

有关详细信息,请参阅Official Documentation | Model Field Reference

答案 1 :(得分:1)

您的Notification模型与您的用户模型有ForeignKey的关系。因此,单个用户模型实例可以具有与之关联的多个Notification实例。 on_delete的含义(django要求你)是,如果删除用户模型的实例,django应该对所有关联的Notification实例做什么?

django 2.x开始,此论点成为必需。

请阅读this以查看所有选项。但是快速破解。

如果要在删除用户模型实例时删除所有关联的Notification实例,请设置on_delete=models.CASCADE

recipient = models.ForeignKey(settings.AUTH_USER_MODEL, blank=False, related_name='notifications', on_delete=models.CASCADE)

如果您希望在删除用户模型的实例时保持通知不变,请使用on_delete=models.SET_NULL。但在这种情况下,您必须在收件人字段上设置null=True。通知将保留,但不会属于任何用户。

recipient = models.ForeignKey(settings.AUTH_USER_MODEL, blank=False,  related_name='notifications', on_delete=models.SET_NULL, null=True)