2010-10-27 11 views
13

Agregando South a un proyecto existente de Django. Lo tengo instalado tanto en la máquina de desarrollo como en el servidor de "producción".Añadiendo South al proyecto, desarrollo y producción de Django

que he hecho lo siguiente en la máquina de desarrollo, entonces: añaden aplicación Sur a settings.py,

python manage.py syncdb 
python manage.py convert_to_south myproject.myapp 

luego cambiaron algunos modelos, a continuación,

python manage.py schemamigration myproject.myapp --auto 
python manage.py migrate myproject.myapp 

parece funcionar hasta el momento . De lo que ahora no estoy tan seguro es de qué hacer en el servidor de producción. Simplemente repita todos estos pasos manualmente? Cargar settings.py modificado, hacer syncdb, convert_to_south, cargar models.py modificado, hacer schemamigration, migrate? ¿Algo diferente? El tutorial here dice algo acerca de agregar migraciones al control de versiones, por lo que, presumiblemente, deberían cargarse y aplicarse de alguna manera en el servidor de producción.

Además, en este momento estoy usando sqlite3 en la máquina de desarrollo y mysql en el servidor: ¿hace que las cosas sean diferentes al sur?

+1

La generosidad de las migraciones de South en el código que usa el ORM es que las convierte en un agnóstico de back-end, por lo que sus migraciones funcionarán en sqlite, mysql y todas las bases de datos que tengan un back-end. –

Respuesta

4

Para asegurarse de que existe la tabla de migración al sur,

python manage.py syncdb 

y luego

python manage.py migrate myproject.myapp --fake 0001 
python manage.py migrate myproject.myapp 

Eso es lo que ha funcionado para mí. :)

16

Mi guía dice:

  1. Instalación del Sur en el servidor. import south desde el shell solo para asegurarse de que está utilizando el mismo env python.
  2. Agregue 'south' a INSTALLED_APPS en settings.py.
  3. Carga settings.py.
  4. Reinicie el servidor
  5. python manage.py syncdb.
  6. Subir nuevo app/models.py y app/migrations/ dir.
  7. Reiniciar el servidor.
  8. python manage.py migrate app --fake 0001
  9. python manage.py migrate app
+0

Creo que esto responde la pregunta mejor que @AKX. Uno puede distinguir de la pregunta que todavía está un poco a oscuras sobre la implementación de su código en el servidor.+1 (Una vez que obtenga suficiente reputación para editar, debería considerar mejorar las respuestas originales, que estaban cerca, sobre componer una nueva.) –

+2

Para aclarar en caso de que no esté claro para cualquiera que lea esto: "reiniciar servidor" NO significa que tiene que reiniciar todo el servidor o la máquina virtual. Simplemente rebote el servidor web. Si está utilizando una versión más nueva de ubuntu + apache, por ejemplo, "sudo service apache2 reload" debería ser suficiente. –

Cuestiones relacionadas