Как получить доступ к актору уведомления django в удобном формате?
Я использую django-notifications (здесь code) для создания уведомлений для моего веб-приложения.
У меня проблема, когда я пытаюсь получить доступ к объекту actor, например, через Notification.object.get(id=1).actor, я получаю следующее исключение:
ValueError: Field 'id' expected a number but got '<property object at 0x7fc171cc5400>'.
что затем вызывает исключение:
ValueError: invalid literal for int() with base 10: '<property object at 0x7fc171cc5400>'
Вот код для моего сигнала:
@receiver(post_save, sender=Request)
def notify_owner_of_request(sender, instance, created, **kwargs):
if created:
notify.send(
sender=sender,
actor = instance.user,
verb = "requested to join ",
recipient = instance.owner,
action_object = instance,
target = instance.club,
)
Независимо от того, какой объект или значение я делаю актором, всегда возникает одна и та же ошибка.
Отмечу, что я могу получить доступ к action_object, target, verb и recipient совершенно нормально, и уведомление действительно работает (одно сделано и правильно).
Модель уведомления из notification-hq имеет следующие атрибуты:
actor_content_type = models.ForeignKey(ContentType, related_name='notify_actor', on_delete=models.CASCADE)
actor_object_id = models.CharField(max_length=255)
actor = GenericForeignKey('actor_content_type', 'actor_object_id')
обращение к actor_content_type дает мне следующее:
<ContentType: clubs | request>
хотя он должен быть типа User
и обращение к actor_object_id дает мне следующее:
'<property object at 0x7fc171cc5400>'
Мне нужно получить доступ к актеру, чтобы я мог проверить, что это правильный пользователь и что он правильно отображается во внешней части уведомлений.
Любая помощь будет очень признательна!