我有事务序列化程序:
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,但是我收到了各种错误。
1条答案
按热度按时间deyfvvtc1#
我猜这就是你想要的??你当前的用户ID