2016-05-30 24 views
6

Bir proje olmadan yeniden kullanılabilir bir Django uygulaması yapıyorum. Bu dizin yapısı şöyledir: Ben django-admin makemigrations çalıştırdığınızdaYeniden kullanılabilir bir Django uygulaması için geçişler nasıl yapılır?

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

alıyorum aşağıdaki hata: Bu bir yeniden kullanılabilir çünkü, bir ayarlar modül yapılandırılmış yok çünkü

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. 

Açıkçası, bu Uygulamanın. Ancak, yine de uygulamamla geçişleri göndermek istiyorum. Onları nasıl yapabilirim?

+0

Bir uygulamada geçişi oluşturup test ediyorsunuz, ardından gemi yalnız. –

cevap

7

Taşınacak işlemleri yapmak için işlevsel bir Django projesine (uygulamanızın yüklü olduğu) sahip olmanız gerekir.

Bunu yapmanın yaygın bir yolu, bir Django projesinin çıplak gereksinimlerini içeren, geçişleri yapmak için çalıştırabileceğiniz bir "test" projesine sahip olmaktır. Geçişler, uygulama dizininizin içinde doğru yerde oluşturulur. böylece kendi yeniden kullanılabilir uygulamanızda hala uygun sürüm kontrolüne sahip olabilirsiniz.

Bu şekilde oluşturulan geçişler kendi kendine yeten (modellerin diğer uygulamalardan modellere bağlı olmadığı varsayılarak) olacak ve paketlenmiş, yeniden kullanılabilir uygulamanızın bir parçası olarak gönderilebilir. geliştiricilerin hızlı şu uygulamalar test edip Aslında vb göçler

4

yapmak için çalışan alabilmeleri büyük Django tabanlı projelerin birçoğu

aslında kendi kod parçası olarak bir test projesi gemi, sen don' Projeye sahip olmanız gerekiyor, tek ihtiyacınız olan geçişler oluşturma işlemini çalıştıran ayar dosyası ve komut dosyası.

# test_settings.py 

DEBUG = True 

SECRET_KEY = 'fake-key' 

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

Ve senaryo, o göçler gibi görünmelidir yapar: Ayarlar folowing (minimum) içermelidir

# 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) 

ve python make_migrations.py tarafından çalıştırmak gerekir. Umarım birisine yardım eder!

İlgili konular