python manage.py flush
removes data from the entire project. I would like to be able to do python manage.py flush agivenapp
How can I do this?
sqlclear management command can be helpful...
Usage: ./manage.py sqlclear [options] <appname appname ...>
Prints the DROP TABLE SQL statements for the given app name(s).
for the postgresql you can do:
./manage.py sqlclear myapp | psql dbname
UPDATE for apps with migrations and Django 1.7+:
python manage.py migrate <app> zero
You can do this with the migrate
command which takes two positional arguments:
Updates database schema. Manages both apps with migrations and those without.
positional arguments:
app_label
App label of an application to synchronize the state.
migration_name
Database state will be brought to the state after that migration. Use the name "zero" to unapply all migrations.
So running a migrate zero followed by a migrate will clear only the data for the given app.
$ python manage.py migrate ${APPNAME} zero
$ python manage.py migrate ${APPNAME}
For later versions of Django try in the Django shell:
from django.apps import apps
my_app = apps.get_app_config('my_app_name')
my_models = my_app.get_models()
for model in my_models:
model.objects.all().delete()
More on the apps
module can be found here.
Of course, you could convert this to a management command yourself using the management infrastructure.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With