Estaba tratando de crear migraciones dentro de una aplicación existente usando el comando makemigrations pero muestra "No se detectaron cambios".
Por lo general, creo nuevas aplicaciones usando el startapp
comando pero no lo usé para esta aplicación cuando la creé.
Después de la depuración, descubrí que no está creando migración porque migrations
falta una aplicación en el paquete / carpeta.
¿Sería mejor si crea la carpeta si no está allí o me falta algo?
python
django
django-migrations
Dilraj
fuente
fuente
makemigrations <myapp>
como señaló Alasdair también.Respuestas:
Para crear migraciones iniciales para una aplicación, ejecute
makemigrations
y especifique el nombre de la aplicación. Se creará la carpeta de migraciones.Su aplicación debe incluirse
INSTALLED_APPS
primero (dentro de settings.py).fuente
migrations
carpeta. Esto podría suceder si creó la aplicación manualmente o si ha actualizado desde una versión anterior de Django que no tenía migraciones.__init__.py
) llamado 'migraciones' en la aplicación.migrate
.Mi problema (y la solución) era aún diferente de los descritos anteriormente.
No estaba usando el
models.py
archivo, pero creé unmodels
directorio y creé elmy_model.py
archivo allí, donde puse mi modelo. Django no pudo encontrar mi modelo, por lo que escribió que no hay migraciones para aplicar.Mi solución fue: en el
my_app/models/__init__.py
archivo agregué esta línea:from .my_model import MyModel
fuente
Hay varias razones posibles para que django no detecte qué migrar durante el
makemigrations
comando.INSTALLED_APPS
.dictmakemigrations -v 3
para verbosity. Esto podría arrojar algo de luz sobre el problema.INSTALLED_APPS
Ruta completa En se recomienda especificar la ruta de configuración de la aplicación del módulo completo 'apply.apps.MyAppConfig'manage.py makemigrations --settings mysite.settings
manage.py makemigrations myapp
, lo que reduce las migraciones solo para la aplicación y lo ayuda a aislar el problema.metacomprobación del modelo que tiene el derecho
app_label
en su meta metaDebug django debug django core script. El comando makemigrations es bastante sencillo. Aquí se explica cómo hacerlo en pycharm . cambie la definición de su script en consecuencia (ej .
makemigrations --traceback myapp
:)Múltiples bases de datos:
allow_syncdb
método.fuente
from recurrence.forms import RecurrenceField
pero debería haber sidofrom recurrence.fields import RecurrenceField
.makemigrations
script busca modelos que están conectados desdeurls.py
". Encontrado aquí stackoverflow.com/questions/43093651/…python manage.py makemigrations -v 3 <app_name>
He leído muchas respuestas a esta pregunta, a menudo afirmando que simplemente se ejecuta
makemigrations
de alguna otra manera. Pero para mí, el problema estaba en laMeta
subclase de modelos.Tengo una configuración de la aplicación que dice
label = <app name>
(en elapps.py
archivo, al ladomodels.py
,views.py
etc.). Si por casualidad su metaclase no tiene la misma etiqueta que la etiqueta de la aplicación (por ejemplo, porque está dividiendo una aplicación demasiado grande en varias), no se detectarán cambios (y ningún mensaje de error útil). Entonces en mi clase de modelo tengo ahora:Ejecutando Django 1.10 aquí.
fuente
Es un comentario pero probablemente debería ser una respuesta.
Asegúrese de que el nombre de su aplicación esté en settings.py, de lo
INSTALLED_APPS
contrario, no importa lo que haga, no se ejecutarán las migraciones.Entonces corre:
fuente
Tuve otro problema no descrito aquí, que me volvió loco.
Tuve un ',' al final en una línea quizás de copiar y pegar. La línea con is_dumb no creó un modelo de migración con './manage.py makemigrations' pero tampoco arrojó un error. Después de eliminar el ',' funcionó como se esperaba.
Así que tenga cuidado cuando copie y pegue :-)
fuente
is_dumb
es igual a la(models.BooleanField(default=False), )
quemakemigrations
no sabe cómo convertir en una columna de base de datos.A veces hay cuando
./manage.py makemigrations
es superior a./manage.py makemigrations <myapp>
porque puede manejar ciertos conflictos entre aplicaciones.Esas ocasiones ocurren en silencio y toma varias horas
swearing
entender el significado real delNo changes detected
mensaje temido .Por lo tanto, es una opción mucho mejor utilizar el siguiente comando:
./manage.py makemigrations <myapp1> <myapp2> ... <myappN>
fuente
Había copiado una tabla desde fuera de django y la clase Meta por defecto era "gestionado = falso". Por ejemplo:
Al cambiar manged a True, makemigrations comenzó a recoger cambios.
fuente
fuente
Resolví ese problema haciendo esto:
fuente
Olvidé poner argumentos correctos:
en models.py y luego comenzó a caer ese molesto
No se detectaron cambios en la aplicación 'myApp'
fuente
Otra posible razón es si tenía algunos modelos definidos en otro archivo (no en un paquete) y no lo ha mencionado en ningún otro lugar.
Para mí, simplemente agregar
from .graph_model import *
aadmin.py
(dóndegraph_model.py
estaba el nuevo archivo) solucionó el problema.fuente
Mi problema era mucho más simple que las respuestas anteriores y probablemente una razón mucho más común siempre que su proyecto ya esté configurado y funcionando. En una de mis aplicaciones que había estado funcionando durante mucho tiempo, las migraciones parecían inestables, así que a toda prisa hice lo siguiente:
Que?
Por error, también eliminé todos los
__init__.py
archivos :( - Todo estaba funcionando nuevamente después de entrar y:Para cada una de mis aplicaciones,
makemigrations
funcionó nuevamente.Resulta que había creado manualmente una nueva aplicación copiando otra y olvidé ponerla
__init__.py
en lamigrations
carpeta y eso me confinó que todo estaba inestable, lo que empeoró mi situación conrm -r
lo descrito anteriormente.Espero que esto ayude a alguien a maldecir el error "No se detectaron cambios" durante unas horas.
fuente
La solución es que debe incluir su aplicación en INSTALLED_APPS.
Lo perdí y encontré este mismo problema.
después de especificar que la migración del nombre de mi aplicación se realizó correctamente
tenga en cuenta que mencioné tableros en último lugar, que es el nombre de mi aplicación.
fuente
INSTALLED_APPS = [
]
asegúrese de 'blog.apps.BlogConfig', (esto está incluido en su settings.py para hacer las migraciones de su aplicación)
luego ejecute el blog python3 manage.py makemigrations o el nombre de su aplicación
fuente
Un problema muy tonto que puede tener también es definir dos
class Meta
en su modelo. En ese caso, cualquier cambio en el primero no se aplicará cuando se ejecutemakemigrations
.fuente
Sé que esta es una vieja pregunta, pero luché con este mismo problema todo el día y mi solución fue simple.
Tenía mi estructura de directorios algo parecido a ...
Y dado que todos los otros modelos hasta el que tuve un problema se importaban en otro lugar que terminó importando desde el
main_app
que se registró en elINSTALLED_APPS
, tuve la suerte de que todos funcionaran.Pero como solo agregué cada uno
app
de ellosINSTALLED_APPS
y noapp_sub*
cuando finalmente agregué un nuevo archivo de modelos que no se importó EN NINGÚN OTRO LUGAR, Django lo ignoró por completo.Mi solución fue agregar un
models.py
archivo al directorio base de cada unoapp
así ...y luego agregue
from apps.app.app_sub1 import *
y así sucesivamente a cada uno de los archivos deapp
nivelmodels.py
.Bleh ... esto me tomó TANTO tiempo en descubrir y no pude encontrar la solución en ningún lado ... Incluso fui a la página 2 de los resultados de Google.
¡Espero que esto ayude a alguien!
fuente
Tuve un problema similar con django 3.0, de acuerdo con la sección de migraciones en la documentación oficial , ejecutar esto fue suficiente para actualizar la estructura de mi tabla:
Pero el resultado siempre fue el mismo: 'no se detectó ningún cambio' sobre mis modelos después de ejecutar el script 'makemigrations'. Tuve un error de sintaxis en models.py en el modelo que quería actualizar en db:
en vez de:
Resolviendo este estúpido error, con esos comandos la migración se realizó sin problemas. Quizás esto ayude a alguien.
fuente
Usted debe agregar
polls.apps.PollsConfig
aINSTALLED_APPS
ensetting.py
fuente
En mi caso olvidé insertar los argumentos de clase
Incorrecto:
Correcto
fuente
En mi caso, primero agregué un campo al modelo, y Django dijo que no hay cambios.
Entonces decidí cambiar el "nombre de la tabla" del modelo, makemigrations funcionó. Luego cambié el nombre de la tabla al valor predeterminado, y el nuevo campo también estaba allí.
Hay un "error" en el sistema de migración de django, a veces no ve el nuevo campo. Podría estar relacionado con el campo de fecha.
fuente
La posible razón podría ser la eliminación del archivo db existente y la carpeta de migraciones, puede usar python,
manage.py makemigrations <app_name>
esto debería funcionar. Una vez enfrenté un problema similar.fuente
Un caso más y una solución más:
Agregué un campo booleano, y al mismo tiempo agregué un @property haciendo referencia a él, con el mismo nombre (doh). Comentó la propiedad y la migración ve y agrega el nuevo campo. Renombrado la propiedad y todo está bien.
fuente
Si tiene el
managed = True
modelo Meta en su modelo, debe eliminarlo y realizar una migración. Luego ejecute las migraciones nuevamente, detectará las nuevas actualizaciones.fuente
Al agregar nuevos modelos a la aplicación django api y ejecutar
python manage.py makemigrations
la herramienta, no detectó ningún modelo nuevo.Lo extraño fue que los viejos modelos fueron elegidos
makemigrations
, pero esto se debió a que estaban referenciados en laurlpatterns
cadena y la herramienta los detectó de alguna manera. Así que vigila ese comportamiento.El problema se debía a que la estructura de directorios correspondiente al paquete de modelos tenía subpaquetes y todos los
__init__.py
archivos estaban vacíos. Deben importar explícitamente todas las clases requeridas en cada subcarpeta y en los modelos__init__.py
para que Django las recoja con lamakemigrations
herramienta.fuente
Intente registrar su modelo en admin.py, aquí hay un ejemplo: - admin.site.register (YourModelHere)
Puede hacer lo siguiente: - 1. admin.site.register (YourModelHere) # En admin.py 2. Vuelva a cargar la página e intente nuevamente 3. Presione CTRL-S y guarde 4. Puede haber un error, especialmente verifique los modelos .py y admin.py 5. O, al final, reinicie el servidor
fuente
Con suerte, esto podría ayudar a alguien más, ya que terminé pasando horas tratando de perseguir esto.
Si tiene una función dentro de su modelo con el mismo nombre, esto eliminará el valor. Muy obvio en retrospectiva, pero no obstante.
Entonces, si tienes algo como esto:
En ese caso, la función anulará la configuración anterior, haciéndola "invisible"
makemigrations
.fuente
Lo mejor que puede hacer es eliminar la base de datos existente. En mi caso, estaba usando la base de datos SQL phpMyAdmin, por lo que eliminé manualmente la base de datos creada allí.
Después de eliminar: creo una base de datos en PhpMyAdmin y no agrego ninguna tabla.
Nuevamente ejecute los siguientes comandos:
python manage.py makemigrations
python manage.py migrate
Después de estos comandos : puede ver que django ha creado automáticamente otras tablas necesarias en la base de datos (aproximadamente hay 10 tablas).
python manage.py makemigrations <app_name>
python manage.py migrate
Y por último: después de los comandos anteriores, todos los modelos (tablas) que ha creado se importan directamente a la base de datos.
Espero que esto ayude.
fuente
Mi problema con este error fue que había incluido:
Modelo interior para el que quería migrar la creación.
fuente
Tuve un problema diferente al crear una nueva aplicación llamada
deals
. Quería separar los modelos dentro de esa aplicación, así que tenía 2 archivos de modelo con nombredeals.py
ydealers.py
. Cuando se ejecutapython manage.py makemigrations
llegué:No changes detected
.Seguí adelante y dentro del
__init__.py
que vive en el mismo directorio donde vivían mis archivos de modelo (ofertas y distribuidor) que hiceY luego el
makemigrations
comando funcionó.Resulta que si no está importando los modelos a ninguna parte O el nombre de archivo de su modelo no está,
models.py
entonces los modelos no serán detectados.Otro problema que me sucedió es la forma en que escribí la aplicación en
settings.py
:Yo tenía:
Debería haber incluido la carpeta del proyecto raíz:
fuente