Tengo grandes problemas para instalar una aplicación Django en una máquina Ubuntu que ejecuta Django 1.10.6.
Estoy acostumbrado a usar una versión anterior de Django y ahora no puedo instalar mi aplicación web. Aquí está la situación:
Tengo un proyecto de Django llamado myproject. La estructura del archivo es:
(BASEDIR)/manage.py (BASEDIR)/mycommon/ # I will discuss mycommon below (BASEDIR)/myproject/ (BASEDIR)/myproject/settings.py (BASEDIR)/myproject/urls.py (BASEDIR)/myproject/views.py (BASEDIR)/myproject/wsgi.py (BASEDIR)/myproject/models/ (BASEDIR)/myproject/models/__init__.py (BASEDIR)/myproject/models/models.pyResulta que para este proyecto necesito poner mis modelos en un paquete común porque hay otra aplicación de Python (que usa Twisted que arranca Django) que necesita acceder a estos modelos. Llamaré a este paquete "mycommon". Así que mis modelos "reales" están aquí:
(BASEDIR)/mycommon/ (BASEDIR)/mycommon/utils.py (BASEDIR)/mycommon/models/ (BASEDIR)/mycommon/models/__init__.py (BASEDIR)/mycommon/models/models.pyEntonces, el archivo de configuración de Django está en (BASEDIR)/myproject/settings.py y el parámetro INSTALLED_APPS está establecido en esto:
INSTALLED_APPS = ( 'myproject.models', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.admin', )Finalmente, tenga en cuenta que myproject/models/models.py es muy simple, ya que solo usa los modelos mycommon:
from django.db import models from mycommon.models.models import *Hasta ahora todo bien, esta es una estructura que funciona bien en versiones anteriores de Django. De todos modos, empiezo con una base de datos MYSQL vacía (creada pero vacía) y ahora vuelvo a (BASEDIR) y ejecuto esto:
python manage.py makemigrations mycommon.modelsLamentablemente me sale un error como este:
RuntimeError: Model class mycommon.models.models.SomeModel doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.Entonces, ¿qué estoy haciendo mal?
En INSTALLED_APPS solo debe tener 'myproject' , sin '.models' .
Pero como está usando Django 1.10, será más limpio si crea su aplicación mycommon a través manage.py startapp mycommon . Esto creará, bueno, algunos archivos, pero debe mover sus modelos a mycommon/models.py . Tenga en cuenta mycommon/apps.py . No tiene que tocar este archivo, solo inclúyalo en la lista INSTALLED_APPS : 'mycommon.apps.MycommonConfig' . De esta manera, el marco de migraciones descubrirá sus modelos automáticamente.
Finalmente, elimine myproject/models , ya que myproject contiene la configuración del proyecto.