Czy mogę wykonać dumpdata
w Django tylko jeden model, a nie całą aplikację, a jeśli tak, to w jaki sposób?
W przypadku aplikacji byłoby to:
python manage.py dumpdata myapp
Jednak chcę, aby jakiś konkretny model, taki jak „myapp.mymodel”, został zrzucony. Powodem jest to, że mam kilka ogromnych 3 milionów rekordów plus zbiory danych w tej samej aplikacji, których nie chciałbym porzucić.
django
django-models
loaddata
dumpdata
nategood
źródło
źródło
Odpowiedzi:
Od wersji 1.1 i nowszych
dumpdata
polecenie zarządzania Django umożliwia zrzucanie danych z poszczególnych tabel:Możesz także oddzielić wiele aplikacji i modeli w wierszu poleceń. Oto definicja kanoniczna:
źródło
--indent 4
podumpdata
Jak wspomniano, nie można tego zrobić za pomocą polecenia manage.py w Django 1.0. Możesz jednak użyć skryptu, aby wyeksportować plik JSON i załadować go za pomocą
loaddata
:źródło
Weź wszystkie dane do formatu json z modelu django.
Składnia:
Na przykład zrzucanie danych z modelu group_permission, który znajduje się w domyślnej aplikacji auth w django.
Aby uzyskać wyjście, spójrz na konsolę .
źródło
Myślę, że masz rozwiązanie w swoim pytaniu. Możesz zrzucić pojedynczy model w następujący sposób:
źródło
Aby odnieść sukces, musiałem to powiedzieć dwa razy i dwa razy określić model, na przykład:
Gdybym tylko powiedział
Zostałem zalany wszystkimi modelami w myapp2, mimo że określiłem my_model.
źródło
Aby obejść ten problem, możesz utworzyć inną aplikację i skopiować model, ale wskaż go do istniejącej tabeli za pomocą opcji meta db_table. Następnie możesz po prostu zrzucić skopiowane modele do nowej aplikacji. Nie ma to wpływu na istniejącą aplikację.
źródło
Stworzyłem polecenie zarządzania, które generuje osprzęt na podstawie modelu. Oprawy można generować uruchamiając:
kod pod adresem : https://gist.github.com/2394883
źródło
Aby zapisać to w określonym pliku:
źródło