Safely storing encrypted credentials in django
Maybe you can rely on a multi-user scheme, by creating :

A user running Django (e.g. django) who does not have the permission to access the credentials
A user having those permissions (e.g. sync).

Both of them can be in the django group, to allow them to access the app. After that, make a script (a Django command, such as manage.py sync-external, for instance) that syncs what you want.
That way, the django user will have access to the app and the sync script, but not the credentials, because only the sync user does. If anyone tries to run that script without the credentials, it will of course result in an error.
Relying on Linux permission model is in my opinion a "Good Idea", but I'm not a security expert, so bear that in mind. If anyone has anything to say about what's above, don't hesitate!
I'm working on a python/django app which, among other things, syncs data to a variety of other services, including samba shares, ssh(scp) servers, Google apps, and others. As such, it needs to store the credentials to access these services. Storing them as unencrypted fields would be, I presume, a Bad Idea, as an SQL injection attack could retrieve the credentials. So I would need to encrypt the creds before storage - are there any reliable libraries to achieve this?
Once the creds are encrypted, they would need to be decrypted before being usable. There are two use cases for my app:

One is interactive - in this case the user would provide the password to unlock the credentials. 
The other is an automated sync - this is started by a cron job or similar. Where would I keep the password in order to minimise risk of exploits here?

Or is there a different approach to this problem I should be taking?