将Django 2.0与Rest 3.7.7结合使用。
我有一个 Serializer 类,其中一个字段为 ChoiceField ,它的选择是调用带有 request.user 的函数的结果>作为参数。
这是我的代码:
class PostModelCreateSerializer(serializers.ModelSerializer):
group = serializers.ChoiceField(choices='')
# What I want to do is this
# group = serializers.ChoiceField(choices= request.user.get_groups())
# get_groups() returns a queryset of groupModel
class Meta:
model = MYMODEL
fields=[
'id',
'group',
'content'
]
谢谢
答案 0 :(得分:1)
要获取当前用户,可以使用self.context['request'].user
语法。要验证提供的组是否在用户的组列表中,您可以创建validate_group
方法:
class PostModelCreateSerializer(serializers.ModelSerializer):
class Meta:
model = MYMODEL
fields=[
'id',
'group',
'content'
]
def validate_group(self, value):
user = self.context['request'].user
user_groups = user.get_groups()
if value not in user_groups:
raise serializers.ValidationError("Invalid group")
return value