Ошибка AnonymousUser на неаутентифицированном маршруте Django

Я в основном FE разработчик. Недавно я пытался отредактировать проект Django и удалить аутентификацию из api. После удаления аутентификации и попытки получить данные без токена он выдает анонимную ошибку. Работает хорошо для действительного пользователя

django_1        |     return method(value)
django_1        |   File "/app/deals/serializers.py", line 285, in get_already_liked
django_1        |     return usr.is_liking_deal(deal_obj=obj)
django_1        | AttributeError: 'AnonymousUser' object has no attribute 'is_liking_deal'

Вот конкретный код в сериализаторах

    def get_already_liked(self, obj):
      usr = self.context["request"].user
      return usr.is_liking_deal(deal_obj=obj)
<<<Поскольку я не отправляю пользователя через аутентификацию, Django принимает его как AnonymousUser, а в модели AnonymousUser нет первичного ключа. Вот связанный код из модели (я думаю)

class DealReactionManager(models.Manager):
    @staticmethod
    def is_user_liking_deal(user, deal):
        """Has user liked the deal already?"""
        try:
            DealReaction.objects.get(user=user, deal=deal)
            return True
        except DealReaction.DoesNotExist:
            return False


class DealReaction(BaseModel):
    deal = models.ForeignKey(to="deals.Deal", related_name="reactions", on_delete=models.CASCADE)
    user = models.ForeignKey(to=get_user_model(), related_name="reactions", on_delete=models.CASCADE)
    objects = DealReactionManager()

    class Meta:
        unique_together = ("deal", "user")
 

Как я понял из этого, после вызова deals api он ищет понравившиеся пользователю предложения, а также другие предложения. Мне нужно сделать так, чтобы если есть пользователь, то он искал уже понравившиеся сделки+другие сделки, если нет, то возвращал только сделки. Как я могу добиться такого решения? Извините, у меня сейчас нет рядом бэкенд разработчика.

Я решил эту проблему, просто проверив аутентификацию в моем сериализаторе.

def get_already_liked(self, obj):
    if self.context["request"].user.is_authenticated:
        return self.context["request"].user.is_liking_deal(deal_obj=obj)
Вернуться на верх