Essayez d'entrer les commandes dans le django-shell en cours d'exécution en tant que document ici :
$ sudo python manage.py shell << EOF
user = User.objects.get(username=FooBar)
user.is_active = False
user.save()
exit()
EOF
Premièrement, vous ne devriez pas accéder à votre shell Python avec sudo
. Il n'est pas nécessaire d'être exécuté en tant que root.
Deuxièmement, la façon de créer un script qui s'exécute à partir de l'invite de commande consiste à écrire un script manage.py personnalisé, afin que vous puissiez exécuter ./manage.py deactivate_users
. Des instructions complètes pour le faire sont dans la documentation.
Si vous souhaitez exécuter un script Python qui accède aux modèles Django, vous devez d'abord définir une variable d'environnement :
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "<path>.settings")
Dans lequel vous devez remplacer <path>
par votre répertoire de projet, celui qui contient le fichier settings.py
.
Vous pouvez ensuite importer vos fichiers modèles, par exemple :
from <path>.models import User
user = User.objects.get(username=FooBar)
user.is_active = False
user.save()