Django: limpiando usuarios desde shell

Es tal el interés por el foro de VamosaVidas (si, ese que rompí en su día y he vuelto a arreglar) que todos los días tenemos cientos de registros. Realmente se trata de robots que se dedican a hacer spam, pero eso es lo de menos :P.

Mientras no actualizo y arreglo django-authall es un poco coñazo andar mirando en el admin el último usuario bueno y borrar manualmente uno a uno cotejando que no me equivoque, así que he pensado en un par de lineas que no deberían hacer demasiado daño si se usan con precaución. Desde la shell de nuestro proyecto podemos hacer algo así:

$ python manage.py shell
>>> from django.contrib.auth.models import User
>>> list(User.objects.order_by('date_joined'))
>>> [user.delete() for user in list(User.objects.order_by('date_joined'))[100:]]

Primero estamos listando todos los usuarios por orden de fecha de registro, los convertimos en lista para que no salgan los datos "truncados". Y en segundo lugar estamos eliminando todos excepto los 100 primeros.

Esta es la sencillez y potencia de Python.

django code

About the author

Óscar
has doubledaddy super powers, father of Hugo and Nico, husband of Marta, *nix user, Djangonaut and open source passionate.