Как получить идентификатор текущего пользователя в сериализаторе Django Rest Framework

У меня есть сериализатор, который получает дату товара из таблицы и данные инвентаризации из другой таблицы для пользователя, который вошел в систему. Я настроил сериализатор для получения данных о товаре и добавил поля, которые должны содержать данные о количестве запасов пользователя.

Запрос возвращает правильную структуру данных, однако он возвращал сумму запасов для всех пользователей, а затем терпел неудачу. Поэтому я попытался отфильтровать эти добавленные поля по идентификатору текущего пользователя, однако при добавлении происходит сбой.

Я хотел бы отфильтровать добавленные поля для инвентаря пользователя по идентификатору пользователя, который вошел в систему. Однако его добавление, похоже, нарушает запрос.

class CardsDataSerializers(serializers.ModelSerializer):
    inventory = serializers.SerializerMethodField()

    class Meta:
        model = magic_set_cards
        fields = ['id', 'name', 'rarity', 'manaCostList', 'convertedManaCost', 'colors', 'number',  'type', 'types', 'imageUri', 'promoTypes', 'hasFoil', 'hasNonFoil', 'inventory']

    @staticmethod
    def get_inventory(self, obj):
        user_id = self.request.user.id
        try:
            standard = inventory_cards.objects.filter(user_id=user_id).filter(card_id=obj.id).values_list('standard').get()[0]
        except inventory_cards.DoesNotExist:
            standard = 0

        try:
            foil = inventory_cards.objects.filter(user_id=user_id).filter(card_id=obj.id).values_list('foil').get()[0]
        except inventory_cards.DoesNotExist:
            foil = 0

        inventory = {
            'standard': standard,
            'foil': foil,
        }
        return inventory

Ошибка:

get_inventory() missing 1 required positional argument: 'request'

Request Method:     GET
Request URL:        http://127.0.0.1:8000/magic/sets/ss1/cards-data/?name=
Django Version:     3.2.7
Exception Type:     TypeError
Exception Value:    

get_inventory() missing 1 required positional argument: 'request'

измените функцию с

@staticmethod
    def get_inventory(self, obj):
        user_id = self.request.user.id

to

def get_inventory(self, obj):
    user = self.context['request'].user
Вернуться на верх