eks*_*soo 0 django django-rest-framework
我正在寻找一种访问上下文以按当前用户进行过滤的方法
class RemovePermissionsSerializer(serializers.Serializer):
user_permissions = serializers.PrimaryKeyRelatedField(
many=True, queryset=Permission.objects.filter(user = context.get('request').user)
)
Run Code Online (Sandbox Code Playgroud)
我无法访问上下文,因为它未定义,self.context 也无法访问
为了实现重写RemovePermissionsSerializer中的get_fields方法,如下所示:
class RemovePermissionsSerializer(serializers.Serializer):
def get_fields(self):
fields = super().get_fields()
# If you want your logic according to request method
request = self.context.get('request')
if request and request.method.lower() == "<your method here>":
fields['user_permissions'] = serializers.PrimaryKeyRelatedField(
many=True, queryset=Permission.objects.filter(user=request.user)
)
return fields
Run Code Online (Sandbox Code Playgroud)
如果您想根据操作更改表示,您可以执行以下操作:
class RemovePermissionsSerializer(serializers.Serializer):
def get_fields(self):
fields = super().get_fields()
# IF you want your logic according to action
view = self.context.get('view')
if view and view.action == "<action name>":
fields['user_permissions'] = serializers.PrimaryKeyRelatedField(
many=True, queryset=Permission.objects.filter(user=request.user)
)
return fields
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
548 次 |
| 最近记录: |