2016-05-30 19 views
6

Tworzę aplikację Django do wielokrotnego użytku bez projektu. Jest to struktura katalogów:Jak wykonać migrację do aplikacji Django do wielokrotnego użytku?

/ 
/myapp/ 
/myapp/models.py 
/myapp/migrations/ 
/myapp/migrations/__init__.py 

Kiedy biegnę django-admin makemigrations pojawia się następujący błąd:

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. 

Oczywiście, to dlatego, że nie mam moduł skonfigurowane ustawienia, ponieważ jest to wielokrotnego użytku aplikacja. Jednak nadal chciałbym przesyłać migracje z moją aplikacją. Jak mogę je wykonać?

+0

Użytkownik tworzy i testuje migrację w aplikacji, a następnie wysyła ją samodzielnie. –

Odpowiedz

7

Potrzebny jest funkcjonalny projekt Django (z zainstalowaną w nim aplikacją) do przeprowadzania migracji.

Typowym sposobem wykonania tego jest posiadanie projektu "testowego", który zawiera podstawowe potrzeby projektu Django, który można uruchomić w celu przeprowadzenia migracji itp. Migracje zostaną utworzone we właściwym miejscu w katalogu aplikacji więc nadal możesz mieć odpowiednią kontrolę wersji itp. w ramach własnej aplikacji wielokrotnego użytku.

Migracje stworzone w ten sposób będą samowystarczalne (zakładając, że modele nie zależą od modeli z innych aplikacji) i mogą być wysyłane jako część pakietu aplikacji wielokrotnego użytku.

Wiele z większych projektów opartych na Django faktycznie wysyłamy projekt testowy jako część swojego kodu, dzięki czemu programiści mogą szybko uzyskać on uruchomiony w celu przetestowania aplikacji i uczynić migracje itp

4

faktycznie, don” Potrzebny jest projekt, wszystko czego potrzebujesz to plik ustawień i skrypt, który uruchamia tworzenie migracji. Ustawienia musi zawierać następujace (minimum):

# test_settings.py 

DEBUG = True 

SECRET_KEY = 'fake-key' 

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'your_app' 
] 

i skrypt, który sprawia, że ​​migracje powinna wyglądać następująco:

# make_migrations.py 

import os 
import sys 

if __name__ == "__main__": 
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "test_settings") 
    from django.core.management import execute_from_command_line 
    args = sys.argv + ["makemigrations", "your_app"] 
    execute_from_command_line(args) 

i należy go uruchomić przez python make_migrations.py. Mam nadzieję, że to komuś pomaga!

Powiązane problemy