1

我正在使用 django-notifications-hq的 django-notifications-hq 包链接并出现错误:

无法分配“<Seller: john@gmail.com>”:“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模型与 1to1 关系user

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实例?

4

1 回答 1

0

这是一个超级简单的解决方案。你已经成功了 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, verb="User has just bought book named {} priced 
                                                             as {}".format(book.title, book.price))

Seller有一个名为的属性,但user它本身不是user

于 2020-08-11T22:30:04.617 回答