6👍
You could use raw SQL :
cursor.execute(“DROP TABLE UGC”)
or you could just use the ORM directly inside a Django shell :
UGCModel.objects.all().delete()
That would erase the data (not the table, though), so you have to be careful 🙂
Another way (for completeness and to make use of South) would be to comment out the model in your models declaration, migrate and then put it back again (assuming there are no models with a reference to it.)
HTH
2👍
In the admin interface, you can go to the list page for that model, then you can select all models and use the Delete selected ...
action at the top of the table.
Remember that, in whatever way you delete the data, foreign keys default to ON DELETE CASCADE
, so any model with a foreign key to a model you want to delete will be deleted as well. The admin interface will give you a complete overview of models that will be deleted.
- [Django]-NoReverseMatch at / Reverse for 'profile' with arguments '('',)' not found. 1 pattern(s) tried: ['profile/(?P<name>[^/]+)/$']
- [Django]-How can I set arbitrary attributes on Django Model Fields, then access them in a ModelForm?
- [Django]-Checking if image exists – Django (1.3)
- [Django]-Background process in GAE
0👍
Faced such issues today with django 2.0.2 because i created my model with
class Front(models.Model):
pass
and migrated it but when i later updated the model, i couldn’t run
python manage.py makemigrations
because it was saying
You are trying to add a non-nullable field 'update' to front without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows
with a null value for this column)
2) Quit, and let me add a default in models.py
Select an option:
What was my solution?
- I choose option 2 which is to quit
- I commented out the troublesome model/table which is
Front
in my case - I ran
python manage.py makemigrations
which deleted the troublesome table/model - I uncommented my model and ran
python manage.py makemigrations
again which recreated the table/model and finally - I migrated my changes with
python manage.py migrate
and everyhing was resolved!
Note: Be careful with the above instruction cause it will delete all references/foreign keys to the table/model with on_delete=models.CASCADE
which is the default!
- [Django]-Get highest count and corresponding value in Django query
- [Django]-Implementing a SOA in Django using celery
- [Django]-Django inline – allow adding disable editing
- [Django]-Add reply to address to django EmailMultiAlternatives
- [Django]-How do i show recent posts first in Django blog?
0👍
Django 3.1.14
If you’re interested in doing it on the command line, and you’ll be doing this type of cleaning of your db frequently, I do this:
# project_name/app_name/management/commands/clear_test_models.py
from django.core.management.base import BaseCommand
from django.apps import apps
keep_models = ['KeepModel0', 'KeepModel1']
class Command(BaseCommand):
"""
clear all in app_name app except listed in keep_models list
"""
help = 'clear all models except those listed in keep_models list'
def handle(self, *args, **kwargs):
my_app = apps.get_app_config('app_name')
my_models = my_app.get_models()
for model in my_models:
if model.__name__ not in keep_models:
model.objects.all().delete()
To run on the command line:
DJANGO_SETTINGS_MODULE=app_name.settings.local python manage.py clear_test_models
- [Django]-Insert pandas data frame into Postgres
- [Django]-In Django, is there an easy way to render a text field as a template, in a template?
0👍
You can do this using the Django shell:
>>> py manage.py shell
>>> from [your_app].models import [Your_Model] as md
>>> md.objects.all().delete()
>>> exit()
Remember to replace [your_app] with the app name and [Your_Model] with the name of the model you want to clear from the database.
Keep in mind this will remove the data in the table but not the table itself. If you wanted to do the latter you’d need to drop the table.