如何解决Django 3.0:django-notifications给出错误:“ Notification.recipient”必须是“ User”实例
我正在使用django-notifications-hq软件包link of django-notifications-hq并收到错误消息:
无法分配“ ”: “ Notification.recipient”必须是“ User”实例。
我的自定义user
模型:
class User(AbstractBaseUser):
email = models.EmailField(max_length=255,unique=True)
name = models.CharField(max_length=255,blank=True,null=True)
staff = models.BooleanField(default=False)
admin = models.BooleanField(default=False)
customer = models.BooleanField(default=False)
seller = models.BooleanField(default=False)
timestamp = models.DateTimeField(auto_now_add=True)
is_active = models.BooleanField(default=True)
我的seller
模型与user
具有1to1关系:
class Seller(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
seller_picture = models.ImageField(upload_to='profile_pic/seller',null=True,blank=True)
我的Book
模型具有外键seller
:
class Book(models.Model):
id = models.UUIDField(primary_key=True,default=uuid.uuid4,editable=False)
title = models.CharField('Title',max_length=255)
authors = models.ManyToManyField(Author,related_name='book_written_by')
seller = models.ForeignKey(Seller,on_delete=models.CASCADE)
price = models.DecimalField('Price',decimal_places=2,max_digits=10)
description = models.TextField('Description')
在成功获取某用户刚刚购买的views
后,在我books
的某个地方,我想通知所有sellers
有人买了书:
for book in books:
notify.send(Seller,recipient=book.seller,verb="User has just bought book named {} priced
as {}".format(book.title,book.price))
我知道它可以正常使用recipient = request.user
,但是我有不同的情况。如何使book.seller
成为User
实例?
解决方法
这是一个超级简单的解决方案。您已经99%到达那里!
代替此:
for book in books:
notify.send(Seller,recipient=book.seller,verb="User has just bought book named {} priced
as {}".format(book.title,book.price))
尝试一下:
for book in books:
notify.send(book.seller.user,recipient=book.seller.user,book.price))
Seller
具有一个名为user
的属性,但它本身不是user
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。