Filtering a related field's queryset in a DRF serializer

Backend Live Coding November 13, 2026 python

How do you filter the queryset of a related field in a serializer?

python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# ======================================================================
# Q: How do you filter the queryset of a related field in a serializer?
# ======================================================================

class ScreenSerializer(serializers.ModelSerializer):
    playlist = serializers.PrimaryKeyRelatedField(queryset=Playlist.objects.none())

    class Meta:
        model = Screen
        fields = ['id', 'name', 'playlist', 'timezone', 'last_seen']
        read_only_fields = ['last_seen']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        request = self.context.get('request')
        if request:
            self.fields['playlist'].queryset = Playlist.objects.filter(
                workspace=request.user.workspace)