簡體   English   中英

Django REST 框架 - 如何在序列化程序中獲取當前用戶

[英]Django REST Framework - How to get current user in serializer

我有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表單上,當創建 object 時,我會得到一個下拉列表,其中包含僅特定於我的用戶的類別)?

我已經嘗試通過get_user()方法執行此操作,並且還嘗試創建一個從另一個序列化程序繼承的變量,該變量僅定義用戶 ID,但我收到了各種錯誤。

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

我想這就是你想要的?? 您當前的用戶 ID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM