Django REST Framework - Как получить текущего пользователя в сериализаторе

У меня есть TransactionSerializer:

class TransactionSerializer(serializers.ModelSerializer):
    user = UserHider(read_only=True)
    category_choices = tuple(UserCategories.objects.filter(user=**???**).values_list('category_name', flat=True))
    category = serializers.ChoiceField(choices=category_choices)

    def create(self, validated_data):
        user = self.context['request'].user
        payment_amount = self.validated_data['payment_amount']
        category = self.validated_data['category']
        organization = self.validated_data['organization']
        description = self.validated_data['description']
        return Transaction.objects.create(user=user, payment_amount=payment_amount, category=category,
                                          organization=organization, description=description)

    class Meta:
        model = Transaction
        fields = ('user', 'payment_amount', 'date', 'time', 'category', 'organization', 'description')

Это полностью справляется с задачей, однако мне нужно, чтобы вместо "??? " подставлялся текущий пользователь, точнее его ID, но я не совсем понимаю, какой базовый метод ModelSerializer я могу использовать, чтобы ничего не повредить, но в то же время получить текущего пользователя как переменную, чтобы потом подставить его в место фильтрации (в данном случае категории фильтруются, если я ставлю какой-то конкретный ID пользователя, который уже зарегистрирован, тогда на форме DRF при создании объекта я получаю выпадающий список с категориями, специфичными только для моего пользователя)?

Я уже пытался сделать это через метод get_user(), а также пытался создать переменную, унаследованную от другого сериализатора, которая определяет только идентификатор пользователя, но я получал различные виды ошибок.

UserCategories.objects.filter(user=user.id)

Полагаю, это то, что вы хотите??? ваш текущий идентификатор пользователя

Вернуться на верх