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 startappcomando 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 migrationsfalta 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
makemigrationsy especifique el nombre de la aplicación. Se creará la carpeta de migraciones.Su aplicación debe incluirse
INSTALLED_APPSprimero (dentro de settings.py).fuente
migrationscarpeta. 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.pyarchivo, pero creé unmodelsdirectorio y creé elmy_model.pyarchivo 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__.pyarchivo agregué esta línea:from .my_model import MyModelfuente
Hay varias razones posibles para que django no detecte qué migrar durante el
makemigrationscomando.INSTALLED_APPS.dictmakemigrations -v 3para verbosity. Esto podría arrojar algo de luz sobre el problema.INSTALLED_APPSRuta 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.settingsmanage.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_labelen 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_syncdbmétodo.fuente
from recurrence.forms import RecurrenceFieldpero debería haber sidofrom recurrence.fields import RecurrenceField.makemigrationsscript 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
makemigrationsde alguna otra manera. Pero para mí, el problema estaba en laMetasubclase de modelos.Tengo una configuración de la aplicación que dice
label = <app name>(en elapps.pyarchivo, al ladomodels.py,views.pyetc.). 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_APPScontrario, 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_dumbes igual a la(models.BooleanField(default=False), )quemakemigrationsno sabe cómo convertir en una columna de base de datos.A veces hay cuando
./manage.py makemigrationses superior a./manage.py makemigrations <myapp>porque puede manejar ciertos conflictos entre aplicaciones.Esas ocasiones ocurren en silencio y toma varias horas
swearingentender el significado real delNo changes detectedmensaje 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.pyestaba 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__.pyarchivos :( - Todo estaba funcionando nuevamente después de entrar y:Para cada una de mis aplicaciones,
makemigrationsfuncionó nuevamente.Resulta que había creado manualmente una nueva aplicación copiando otra y olvidé ponerla
__init__.pyen lamigrationscarpeta y eso me confinó que todo estaba inestable, lo que empeoró mi situación conrm -rlo 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 Metaen 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_appque se registró en elINSTALLED_APPS, tuve la suerte de que todos funcionaran.Pero como solo agregué cada uno
appde ellosINSTALLED_APPSy 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.pyarchivo al directorio base de cada unoappasí ...y luego agregue
from apps.app.app_sub1 import *y así sucesivamente a cada uno de los archivos deappnivelmodels.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.PollsConfigaINSTALLED_APPSensetting.pyfuente
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 = Truemodelo 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 makemigrationsla 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 laurlpatternscadena 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__.pyarchivos estaban vacíos. Deben importar explícitamente todas las clases requeridas en cada subcarpeta y en los modelos__init__.pypara que Django las recoja con lamakemigrationsherramienta.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 makemigrationspython manage.py migrateDespué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 migrateY 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.pyydealers.py. Cuando se ejecutapython manage.py makemigrationsllegué:No changes detected.Seguí adelante y dentro del
__init__.pyque vive en el mismo directorio donde vivían mis archivos de modelo (ofertas y distribuidor) que hiceY luego el
makemigrationscomando funcionó.Resulta que si no está importando los modelos a ninguna parte O el nombre de archivo de su modelo no está,
models.pyentonces 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