使用信号更新django中的通知模型

问题描述 投票:0回答:1

我正在从事图书目录项目。添加新书后,我正尝试向用户发送通知。

我已经建立了此通知模型:

...
class Notification(models.Model):
    title =models.CharField(max_length =255)
    message =models.TextField()
    viewed =models.BooleanField(default =False)
    user =models.ForeignKey(settings.AUTH_USER_MODEL,on_delete =models.CASCADE,)

    def __str__(self):
        return self.title

我能够在控制台中生成post_save信号,以打印“已添加书”。虽然我在将值保存到通知表中面临挑战这是signals.py文件:

from django.db.models.signals import post_save
# from django.dispatch import receiver
from books.models import Book
from .models import Notification

# @receiver(post_save,sender =Book)
def book_add_notify(sender,**kwargs):
    print('Book is added')
    Notification.objects.create(user =kwargs.get('instance'),
    title ='Thanks for adding your book!',
    message='Your book has been successfully Added')

post_save.connect(book_add_notify,sender =Book)

这是我收到的错误消息:

/ books / new /中的ValueError无法分配“”:“ Notification.user”必须是“ CustomUser”实例。

我不确定如何处理此CustomUser错误。让我知道是否需要更多信息。

python django django-models django-signals
1个回答
0
投票

该信号是由Book对象发送的,因此您的实例是Book对象。您应该在Notification.objects.create()中传递CustomUser对象您将在哪里获得CustomUser对象取决于您的应用程序。从外观上看可能是一本书的作者。

© www.soinside.com 2019 - 2024. All rights reserved.