Cada contêiner no docker, por padrão, obtém seu próprio nome de host e IP. Quando o compose ativa os contêineres para você, ele também coloca todos os contêineres em uma rede por padrão para permitir a descoberta baseada em DNS.
O que isso significa é que seu banco de dados não pode ser acessado no host local, mas você pode alcançá-lo pelo nome do serviço "db". Altere esta linha em seu settings.py:
'HOST': 'localhost',
para:
'HOST': 'db',