La tabla se eliminó, ¿cómo puedo hacer que Django la vuelva a crear?

Hay dos modelos, Grupos y Estudiantes, y solo una tabla para Grupos de ellos, la tabla de Estudiantes se eliminó.

¿Cómo maje Django lo crea de nuevo? Si hago makemigrations se imprime “No se detectaron cambios”.

En la página de administración, cuando hago clic en la tabla de Estudiantes, se produce una excepción:

relation "students_students" does not exist 

En django 1.7 puedes probar:

 1. Delete your migrations folder 2. In the database: DELETE FROM django_migrations WHERE app = 'app_name'. You could alternatively just truncate this table. 3. python manage.py makemigrations 4. python manage.py migrate --fake 

Si está trabajando en Django 1.9.5, esta es la solución al 100% para este problema:

 1. Delete your migrations folder 2. In the database: DELETE FROM django_migrations WHERE app = 'app_name'. You could alternatively just truncate this table. 3. python manage.py makemigrations app_name 4. python manage.py migrate 

¡Esto funciona al 100% para mí!

No hay una manera fácil de hacer que Django vuelva a crear una tabla que ha eliminado manualmente. Una vez que su base de datos se modifica manualmente, la vista de Django de la base de datos (de las migraciones) es diferente de la realidad, y puede ser difícil de arreglar.

Si ejecuta el comando sqlmigrate , le mostrará el SQL requerido para crear la tabla. Puede ejecutar el sql en un shell de base de datos. Asumiendo que el nombre de su aplicación es de students , y la migración que creó la tabla fue 00XX_create_students.py , usted haría:

 ./manage.py sqlmigrate students 00XX_create_students 

Tenga cuidado si hay claves foráneas hacia o desde la tabla de alumnos, las restricciones también deberán crearse.

Para django 2 haz esto:

  1. Delete your migrations folder 2. In the database: `DELETE FROM django_migrations WHERE app = 'app_name';` 3. python manage.py makemigrations app_name 4. python manage.py migrate 5. python manage.py migrate --fake default //This was the key to solve my problem 

Creo la tabla de forma manual y ayuda.

Para Django 1.10.4, eliminé el archivo db.sqlite3 de la carpeta del proyecto y luego ejecuté los siguientes comandos:

  1. python manage.py makemigrations nombre_aplicación
  2. Python manage.py migrate

Django 1.11.2 utilizando MariaDB, caída accidental de la tabla de base de datos. Para volver a crear la tabla, intente lo siguiente: 1 / Eliminar todo excepto para init .py en su directorio app / migrations 2 / select * from django_migrations; elimine de django_migrations donde app = ‘yourapp’; 3 / Comprueba que tu modelo es bueno y ejecuta: python manage.py makemigrations 4 / python manage.py migrate

¡Funciona para mi!

Acabo de eliminar mi carpeta de migraciones, eliminé toda la base de datos y luego realicé la migración de la aplicación.

 python3 manage.py makemigration python3 manage.py migrate 

y volvió.

Cambie el nombre de la tabla eliminada a some_new_name en models.py y ejecute:

python3 manage.py makemigration
python3 manage.py migrate

de nuevo, cambie el nombre de la tabla some_new_name al nombre original y ejecute

python3 manage.py makemigration
python3 manage.py migrate

por último, vaya a dbshell y suelte la tabla some_new_name