[PYTHON] Renommer les colonnes de table dans Django3

Comment renommer les colonnes de table dans Django3

Remplacez pub_data du modèle Question de l'application de sondage par pub_date.

environnement

manière

Créer un fichier de migration vide

Créez un fichier de migration vide sur la ligne de commande en vous référant au Document officiel.

$ python3 manage.py makemigration --empty [nom de l'application]

Modifier le fichier de migration

Ensuite, un fichier de migration sera créé dans le dossier polls directement sous l'application.

migrations/0002_auto_20200128_0044.py


# Generated by Django 3.0.2 on 2020-01-28 00:44

from django.db import migrations


class Migration(migrations.Migration):

    dependencies = [
        ('[nom de l'application]', '0001_initial'),
    ]

    operations = [
    ]

Réécrivez ceci comme suit.

migrations/0002_auto_20200128_0044.py


# Generated by Django 3.0.2 on 2020-01-28 00:44

from django.db import migrations


class Migration(migrations.Migration):

    dependencies = [
        ('[nom de l'application]', '0001_initial'),
    ]

    operations = [
        migrations.RenameField(
            model_name='question', #Nom du modèle
            old_name='pub_data',   #Changer avant
            new_name='pub_date'    #Après le changement
        )
    ]

Si vous réécrivez le RenameField, vous pouvez ajouter ou supprimer des colonnes et des index de la même manière. Pour plus d'informations, rendez-vous sur Documents officiels.

Appliquer la migration

Enfin, exécutez la commande suivante sur la ligne de commande pour appliquer les modifications.

$ python3 manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, polls, sessions
Running migrations:
  Applying polls.0002_auto_20200128_0044... OK

Vérifions cela du côté SQL.

mysql> DESC polls_question;
+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| id            | int          | NO   | PRI | NULL    | auto_increment |
| question_text | varchar(200) | NO   |     | NULL    |                |
| pub_date      | datetime(6)  | NO   |     | NULL    |                |
+---------------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

C'est étrange: détendu:

Correction latérale de Django

Modifiez des fichiers tels que model.py.

Changer avant

model.py


class Question(models.Model):
  question_text = models.CharField(max_length=200)
 # pub_data -> pub_date
  pub_data = models.DateTimeField('data published')

  def __str__(self):
    return self.question_text

Après le changement

model.py


class Question(models.Model):
  question_text = models.CharField(max_length=200)
  # pub_data -> pub_date
  pub_date = models.DateTimeField('date published')

  def __str__(self):
    return self.question_text

fin

Pourquoi le nom de la fonction qui change le nom de la colonne RenameField au lieu de RenameColumn?

Si quelqu'un connaît un autre bon moyen, faites-le moi savoir.

Recommended Posts

Renommer les colonnes de table dans Django3
Sortie de la structure de table dans Django
Modèle dans Django
création de table django
Formulaire à Django
Table de décalage Django Python
Modifications du modèle dans Django
Définition de table dans SQL Alchemy
[Django] Renommer le projet
[Django] Perform Truncate Table (supprimer toutes les données de la table)
Optimisation des performances dans Django 3.xx
PHP comme var_dump dans le template Django
Gérer les constantes dans les modèles Django
Implémenter la fonction de suivi dans Django
J'ai fait une commande pour générer un commentaire pour une table dans Django
(Note) Django dans l'environnement Vagrant
Renommer une application Django existante
Permuter les colonnes dans les trames de données pandas
Afficher Django ManyToManyField dans un modèle
recharger dans le shell django avec ipython
Mettre en œuvre un test piloté par table en Java
Définir des espaces réservés dans les champs de saisie dans Django
Ajouter dynamiquement des champs de formulaire dans Django
Erreur liée à memcached dans django
Implémentation de la fonction de connexion dans Django
Enregistrer l'application Django dans le projet
Ecrire des contraintes de clé externe dans Django
Comment refléter CSS dans Django
Changer la langue affichée dans Django 1.9
Déployez Django en 3 minutes à l'aide de docker-compose
Épingler la valeur de départ factory_boy dans Django
API GraphQL utilisant graphene_django dans Django
Implémentation du bouton like dans Django + Ajax
Récupérer la chaîne de requête (chaîne de requête) avec Django
Créer un bot LINE avec Django
Ajout d'une fonction pour enregistrer les décalages souhaités dans la table des décalages Django