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)
Полагаю, это то, что вы хотите??? ваш текущий идентификатор пользователя