Nukedb: příkaz, který všechny aplikace odmigruje
Uvede tedy databázi do naprosto čistého stavu, bez tabulek ap. Není závislá na databázi (narozdíl od 'rm db-local.sqlite3') a nepotřebuje práva vytvářet nové databáze (narozdíl od 'DROP DATABASE' nebo './manage.py reset_db' nad Postgresem) Jinak je to prostě for-cyklus přes INSTALLED_APPS.
This commit is contained in:
parent
402f5bdeb4
commit
7a911b3a3d
1 changed files with 20 additions and 0 deletions
20
seminar/management/commands/nukedb.py
Normal file
20
seminar/management/commands/nukedb.py
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
from mamweb.settings import INSTALLED_APPS
|
||||||
|
from django.core.management.base import BaseCommand, CommandError
|
||||||
|
from django.core.management import call_command
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
help = "Odmigruje všechny moduly (i.e. smaže všechny tabulky, ale databázi nechá)"
|
||||||
|
|
||||||
|
def add_arguments(self, parser):
|
||||||
|
# TODO: --force (makat a neblábolit)
|
||||||
|
pass
|
||||||
|
def handle(self, *args, **options):
|
||||||
|
# TODO: zeptat se
|
||||||
|
for app in INSTALLED_APPS:
|
||||||
|
app = app.split('.')[-1]
|
||||||
|
try:
|
||||||
|
call_command('migrate', app, 'zero')
|
||||||
|
except CommandError:
|
||||||
|
# app nemá migrace (aspoň typicky)
|
||||||
|
pass
|
||||||
|
call_command('showmigrations')
|
Loading…
Reference in a new issue