Есть модель запроса на добавление в друзья:
class AddRequest(models.Model):
sender = models.ForeignKey(Contact, on_delete=models.CASCADE, related_name = 'invited', null=True)
receiver = models.ForeignKey(Contact, on_delete=models.CASCADE, null=True, related_name='invites')
timestamp = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f'{self.sender.user.username} -> {self.receiver.user.username}'
class Meta:
verbose_name = 'Запрос на добавление'
verbose_name_plural = 'Запросы на добавление'
Есть модель контакта:
class Contact(models.Model):
user = models.ForeignKey(User, related_name='friends', on_delete=models.CASCADE)
friends = models.ManyToManyField('self', blank=True)
image = models.ImageField('Изображение', upload_to = 'user_avatars/%Y/%m/%d', blank=True)
def __str__(self):
return self.user.username
class Meta:
verbose_name = 'Контакт'
verbose_name_plural = 'Контакты'
Хочу при заходе пользователя на страницу другого пользователя выводить поле is_sent, которое будет означать, был ли отправлен запрос текущим пользователем пользователю, на чью страницу он зашел
Пытался написать что-то такое, но is_sent не работает:
class ContactCustomViewSet(RetrieveUpdateDestroyPermissionViewset):
'''Обзор, обновление и удаление контакта'''
serializer_class = ContactDetailSerializer
permission_classes = [IsCurrentUser, ]
permission_classes_by_action = {
'retrieve': [permissions.IsAuthenticated, ]
}
def get_queryset(self):
queryset = Contact.objects.all().annotate(
is_friend=Count('friends', filter=Q(friends__user=self.request.user))
).annotate(
num_friends=Count('friends')
).annotate(
current_user=Count('user', filter=Q(user=self.request.user))
).annotate(
is_sent=Count('invited', filter=Q(invited__user=self.request.user))
)
return queryset
Как правильно вывести?