Django REST框架-如何在序列化器中获取当前用户

3npbholx  于 2022-11-26  发布在  Go
关注(0)|答案(1)|浏览(161)

我有事务序列化程序

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()**方法来实现这一点,并且还尝试过创建一个从另一个序列化程序继承的变量,它只定义用户ID,但是我收到了各种错误。

deyfvvtc

deyfvvtc1#

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

我猜这就是你想要的??你当前的用户ID

相关问题