Фильтр и получение всех клиентов, которые принесли авторам другой контент, для отправки уведомления о добавлении нового контента

Я хочу фильтровать и получать всех клиентов, которые принесли авторам другой контент для отправки уведомления, когда новый контент добавлен Это работает на queryset я знаю, но я в замешательстве, как это сделать. Если кто-нибудь поделится, пожалуйста.

Вот мои модели

контент:

 class Content(models.Model):
    title = models.CharField(max_length=1000)
    Author = models.ForeignKey('User',on_delete=models.CASCADE)
    slug = AutoSlugField(populate_from='title', unique=True, null=False)
    cover = models.ImageField(upload_to='course', default='nocover.jpg')
    catogary = models.ForeignKey(Category, on_delete=models.RESTRICT)
    description = models.TextField(max_length=2000, null=True, blank=True)
    requirements = models.TextField()
    price = models.FloatField()
    language = models.ForeignKey(Language, on_delete=models.RESTRICT)

Покупаемый контент

 class PurchasedContent(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    course = models.ManyToManyField(Course, blank=True, related_name='course')

Мне нужен весь список email клиентов, которые приобрели курс определенного автора. Автор будет аутентифицирован при добавлении. Мы получим Автора как request.user

Вот пример ListCreateAPIView в django rest Framework

class createlistcourseview(generics.ListCreateAPIView):

permission_classes = [TokenHasReadWriteScope]
queryset = Content.objects.all()
serializer_class = ContentSerializer



def perform_create(self, serializer):

    #Here I want to create a Function that sends mall
    serializer.save(author=self.request.user)

Итак, что вы можете сделать, это использовать сигнал для отправки электронной почты пользователям всякий раз, когда создается контент, например, так:

from django.dispatch import receiver

# models.py

@receiver(models.signals.post_save, sender=Content)
def send_email(sender, instance:Content, created, **kwargs):
    if created:
        # import and use your email helper here
        # since the related name you chose for the purchased_content course is a little confusing I changed it to `purchased_content`
        purchases = instance.course.purchased_content.all()
        send_email(users=[user.email for user in purchases])
        return
Вернуться на верх